Laravel 5.2同时使用两个不同的数据库连接(sqlsrv + mysql)

时间:2016-03-23 15:22:44

标签: php eloquent laravel-5.2 sqlsrv

当我使用模型

时,我想做类似的事情
class DB extends Model {

Protected $table = "mssql_table";
}

DB::useConnection("mssql")->All();

就配置而言,我发现我可以自己在app / config / database.php中添加它

所以我做到了。

所以现在我已经在我的联系中得到了这个:

'mssql' => [
    'driver' => 'sqlsrv',
    'host' => env('DB_MSSQL_HOST', 'localhost'),
    'port' => env('DB_MSSQL_PORT', '3306'),
    'database' => env('DB_MSSQL_DATABASE', 'forge'),
    'username' => env('DB_MSSQL_USERNAME', 'forge'),
    'password' => env('DB_MSSQL_PASSWORD', ''),
    'charset' => 'utf8',
    'collation' => 'utf8_unicode_ci',
    'prefix' => '',
    'strict' => false,
    'engine' => null,
],

这是我的.env文件

DB_MSSQL_HOST=
DB_MSSQL_PORT=
DB_MSSQL_DATABASE=
DB_MSSQL_USERNAME=
DB_MSSQL_PASSWORD=

但下一步是什么?谷歌没有真正帮助我,在laravel 4. *你可以使用db :: connection();但它似乎已经有效了

有什么想法吗?

2 个答案:

答案 0 :(得分:3)

首先,您需要在配置中设置一个或多个数据库(确保更改值,我只是复制和粘贴):

'db1' => [
    'driver' => 'sqlsrv',
    'host' => env('DB_MSSQL_HOST', 'localhost'),
    'port' => env('DB_MSSQL_PORT', '3306'),
    'database' => env('DB_MSSQL_DATABASE', 'forge'),
    'username' => env('DB_MSSQL_USERNAME', 'forge'),
    'password' => env('DB_MSSQL_PASSWORD', ''),
    'charset' => 'utf8',
    'collation' => 'utf8_unicode_ci',
    'prefix' => '',
    'strict' => false,
    'engine' => null,
],

'db2' => [
    'driver' => 'sqlsrv',
    'host' => env('DB_MSSQL_HOST', 'localhost'),
    'port' => env('DB_MSSQL_PORT', '3306'),
    'database' => env('DB_MSSQL_DATABASE', 'forge'),
    'username' => env('DB_MSSQL_USERNAME', 'forge'),
    'password' => env('DB_MSSQL_PASSWORD', ''),
    'charset' => 'utf8',
    'collation' => 'utf8_unicode_ci',
    'prefix' => '',
    'strict' => false,
    'engine' => null,
],

然后,当然,您将需要为新添加的数据库创建一些迁移模式(您需要表等):

Schema::connection('db2')->create('table_name', function($table)
{
    $table->increments('id');
    ...
});

现在,在您的Eloquent模型中,您可以定义要使用的数据库,如下所示:

class ModelName extends Eloquent {

    protected $connection = 'db2';

}

答案 1 :(得分:1)

谢谢@Mike Barwick,我唯一想要的是protected $connection = ""

现在我可以一次查询2个数据库