Database
Il plugin può configurare il proprio database, ad esempio plugin/foo/config/database.php
contiene il seguente contenuto:
return [
'default' => 'mysql',
'connections' => [
'mysql' => [ // mysql è il nome della connessione
'driver' => 'mysql',
'host' => '127.0.0.1',
'port' => 3306,
'database' => 'nome del database',
'username' => 'nome utente',
'password' => 'password',
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_general_ci',
],
'admin' => [ // admin è il nome della connessione
'driver' => 'mysql',
'host' => '127.0.0.1',
'port' => 3306,
'database' => 'nome del database',
'username' => 'nome utente',
'password' => 'password',
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_general_ci',
],
],
];
Usa Db::connection('plugin.{plugin}.{nome connessione}');
, per esempio
use support\Db;
Db::connection('plugin.foo.mysql')->table('user')->first();
Db::connection('plugin.foo.admin')->table('admin')->first();
Se si desidera utilizzare il database del progetto principale, è sufficiente utilizzarlo direttamente, per esempio
use support\Db;
Db::table('user')->first();
// Supponiamo che il progetto principale abbia anche una connessione admin
Db::connection('admin')->table('admin')->first();
Configurare il database per il Modello
Possiamo creare una classe Base per il Modello, dove la classe Base usa $connection
per specificare la connessione al database del plugin, ad esempio
<?php
namespace plugin\foo\app\model;
use DateTimeInterface;
use support\Model;
class Base extends Model
{
/**
* @var string
*/
protected $connection = 'plugin.foo.mysql';
}
In questo modo, tutti i Modelli all'interno del plugin ereditano da Base e utilizzano automaticamente il proprio database del plugin.
Riuso della configurazione del database
Naturalmente possiamo riutilizzare la configurazione del database del progetto principale, ad esempio, se si sta utilizzando webman-admin, è possibile riutilizzare la configurazione del database di webman-admin, ad esempio
<?php
namespace plugin\foo\app\model;
use DateTimeInterface;
use support\Model;
class Base extends Model
{
/**
* @var string
*/
protected $connection = 'plugin.admin.mysql';
}