LARAVEL Eloquent查询多个模式

Ara*_*rav 4 laravel laravel-5.2

我是否需要创建多个连接才能访问不同的数据库/架构.我不能使用一个dbconnection.有没有办法在laravel eloquent或db builder中传递数据库名称?目前在原始的PHP我使用一个连接来查询不同的架构.

小智 6

在 Eloquent 中,我使用 DB:connection() 来设置我的命名连接,如下所示:

        $query = DB::connection('db_connection_name')->table($this->table)
Run Code Online (Sandbox Code Playgroud)

如果您不知道,数据库连接在配置 app/config/database.php 中命名


Him*_*val 6

创建与database.php文件的不同连接,然后将它们传递给您的eloquent模型.

'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,
],
Run Code Online (Sandbox Code Playgroud)

假设我有模型User.php使用名为mysql1的mysql连接

在我的模型中,我将添加:

protected $connection = 'mysql1'; 
Run Code Online (Sandbox Code Playgroud)

如果我想使用名为mysql2的mysql连接,那么我将使用

protected $connection = 'mysql2'; 
Run Code Online (Sandbox Code Playgroud)

在这里,我将静态连接到模型.