資料庫
插件可以配置自己的資料庫,例如plugin/foo/config/database.php
內容如下
return [
'default' => 'mysql',
'connections' => [
'mysql' => [ // mysql為連接名
'driver' => 'mysql',
'host' => '127.0.0.1',
'port' => 3306,
'database' => '資料庫',
'username' => '用戶名',
'password' => '密碼',
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_general_ci',
],
'admin' => [ // admin為連接名
'driver' => 'mysql',
'host' => '127.0.0.1',
'port' => 3306,
'database' => '資料庫',
'username' => '用戶名',
'password' => '密碼',
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_general_ci',
],
],
];
引用方式為Db::connection('plugin.{插件}.{連接名}');
,例如
use support\Db;
Db::connection('plugin.foo.mysql')->table('user')->first();
Db::connection('plugin.foo.admin')->table('admin')->first();
如果想使用主項目的資料庫,則直接使用即可,例如
use support\Db;
Db::table('user')->first();
// 假設主項目還配置了一個admin連接
Db::connection('admin')->table('admin')->first();
為Model配置資料庫
我們可以為Model創建一個Base類,Base類用$connection
指定插件自己的資料庫連接,例如
<?php
namespace plugin\foo\app\model;
use DateTimeInterface;
use support\Model;
class Base extends Model
{
/**
* @var string
*/
protected $connection = 'plugin.foo.mysql';
}
這樣插件裡所有的Model繼承自Base,就自動使用了插件自己的資料庫。
複用資料庫配置
當然我們可以複用主項目的資料庫配置,如果接入了webman-admin,也可以複用webman-admin資料庫配置,例如
<?php
namespace plugin\foo\app\model;
use DateTimeInterface;
use support\Model;
class Base extends Model
{
/**
* @var string
*/
protected $connection = 'plugin.admin.mysql';
}