我是否需要创建多个连接才能访问不同的数据库/架构。我不能使用一个dbconnection。有没有办法在laravel eloquent或db builder中传递数据库名称?目前在原始的PHP我使用一个连接来查询不同的架构。
答案 0 :(得分:5)
创建与database.php文件的不同连接,然后将它们传递给您的雄辩模型。
'mysql1' => [
'driver' => 'mysql',
'host' => env('DB_HOST', 'localhost'),
'database' => 'db1',
'username' => 'root',
'password' => '',
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
'strict' => false,
],
// connection 2
'mysql2' => [
'driver' => 'mysql',
'host' => env('DB_HOST', 'localhost'),
'database' => 'db2',
'username' => 'root',
'password' => '',
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
'strict' => false,
],
假设我有模型User.php使用名为mysql1的mysql连接
在我的模型中,我将添加:
protected $connection = 'mysql1';
如果我想使用名为mysql2的mysql连接 然后我会用
protected $connection = 'mysql2';
这里我将静态设置为模型。
答案 1 :(得分:2)
在Eloquent中,我使用DB:connection()来设置我的命名连接,如下所示:
$query = DB::connection('db_connection_name')->table($this->table)
如果您不知道,数据库连接在config app / config / database.php中命名