Laravel 5.2同时使用两个不同的数据库连接(sqlsrv + mysql)
I would like to do something like this when i use a model
class DB extends Model {
Protected $table = "mssql_table";
}
DB::useConnection("mssql")->All();
As far as configuration goes i've found out that I can add it myself in app/config/database.php
And so I did.
So now i've got this in my connetions:
'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,
],
and this to my .env file
DB_MSSQL_HOST=
DB_MSSQL_PORT=
DB_MSSQL_DATABASE=
DB_MSSQL_USERNAME=
DB_MSSQL_PASSWORD=
But what is the next step? google didnt really help me that much, in laravel 4.* you could use db::connection(); but it dosent seem to work anymore
Any ideas?
我想在使用模型时做类似的事情 p>
class DB extends Model {
Protected $ table =“mssql_table”;
}
DB :: useConnection(“mssql”) - > All();
code> pre >
至于配置,我发现我可以自己在app / config / database.php中添加它 p>
所以我做到了。 p>
所以现在我的连接中已经有了这个: p>
'mssql'=> [
'driver'=> 'sqlsrv',
'host'=> env('DB_MSSQL_HOST','localhost'),
'port'=> env('DB_MSSQL_PORT','3306'),
'数据库'=> env('DB_MSSQL_DATABASE','forge'),
'username'=> env('DB_MSSQL_USERNAME','forge'),
'password'=> env('DB_MSSQL_PASSWORD',''),
'charset'=> 'utf8',
'collation'=> 'utf8_unicode_ci',
'前缀'=> '',
'严格'=> false,
'engine'=> null,
],
code> pre>
这是我的.env文件 p>
DB_MSSQL_HOST =
DB_MSSQL_PORT = \ nDB_MSSQL_DATABASE =
DB_MSSQL_USERNAME =
DB_MSSQL_PASSWORD =
code> pre>
但下一步是什么? 谷歌没有真正帮助我,在laravel 4. *你可以使用db :: connection(); 但它似乎已经有效了 p>
任何想法? p>
div>
First, you need to set-up one or more databases in your config (be sure to change values, I just pretty much copied and pasted):
'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,
],
Then of course, you're going to need to create some migration schema for the newly added database (you need tables, etc.):
Schema::connection('db2')->create('table_name', function($table)
{
$table->increments('id');
...
});
Now in your Eloquent model, you can define what database you want to use like so:
class ModelName extends Eloquent {
protected $connection = 'db2';
}
Thank you @Mike Barwick, the only thing that i was looking for was protected $connection = ""
Now i can query 2 databases at once