ฐานข้อมูล
ปลั๊กอินสามารถกำหนดฐานข้อมูลของตนเองได้ เช่น 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
เราสามารถสร้างคลาส Base สำหรับ Model โดยใช้ $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';
}