这是 Laravel 中数据库分区设置的推荐规则。
'mysql' => [
'read' => [
'host' => '192.168.1.1',
],
'write' => [
'host' => '196.168.1.2'
],
'sticky' => true,
'driver' => 'mysql',
'database' => 'database',
'username' => 'root',
'password' => '',
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => '',
],
但是如果我想对每个读/写数据库使用不同的访问信息,如DB_NAME、USER_ID、PASS等,那我该怎么做呢?谢谢。
最佳答案
您可以创建两个连接,然后使用 on 方法指定与 Eloquent 的连接:
'mysql' => [
'driver' => 'mysql',
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
'unix_socket' => env('DB_SOCKET', ''),
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => '',
'strict' => true,
'engine' => null,
],
'mysql2' => [
'driver' => 'mysql',
'host' => env('DB_HOST2', '127.0.0.1'),
'port' => env('DB_PORT2', '3306'),
'database' => env('DB_DATABASE2', 'forge'),
'username' => env('DB_USERNAME2', 'forge'),
'password' => env('DB_PASSWORD2', ''),
'unix_socket' => env('DB_SOCKET2', ''),
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => '',
'strict' => true,
'engine' => null,
],
User::on('mysql2')->where('id', $id)->update($data);
或使用查询生成器:
DB::connection('mysql2')->table('users')->where('id', $id)->update($data);
关于php - 如何在 Laravel 中划分读/写数据库设置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46061607/