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

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',
'collat​​ion'=>  '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