2016-03-23 113 views
0

我想,當我使用一個模型Laravel 5.2使用兩個不同的數據庫連接同時(SQLSRV + MYSQL)

class DB extends Model { 

Protected $table = "mssql_table"; 
} 

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

就做這樣的事情作爲配置去向何方,我已經找到了,我可以添加它自己在app/config/database.php

所以我做了。

所以,現在我已經在我的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, 
], 

,這對我.ENV文件

DB_MSSQL_HOST= 
DB_MSSQL_PORT= 
DB_MSSQL_DATABASE= 
DB_MSSQL_USERNAME= 
DB_MSSQL_PASSWORD= 

但是,什麼是下一個步驟?谷歌沒有真正幫助我很多,在laravel 4. *你可以使用db :: connection();但它似乎工作了

任何想法?

+0

提交答案2個查詢數據庫。知道它是否適合你。如果它對你有幫助,一定要點擊接受和/或投票答案。否則,您將避免將來回答您的問題。 –

回答

2

首先,你需要建立一個或多個數據庫中你的配置(一定要改變價值觀,我只是非常複製和粘貼):

'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'); 
    ... 
}); 

現在,你可以定義你想要使用像這樣什麼數據庫:

class ModelName extends Eloquent { 

    protected $connection = 'db2'; 

} 
1

謝謝@Mike巴威克,我一直在尋找的唯一的事情就是protected $connection = ""

現在我可以在一次

+0

嗨,我是Laravel的新人。我有一個像你的情況,我必須從sqlsrv數據庫中獲取數據,而我使用的主數據庫是mysql。我應該改變你的'類DB擴展模型{受保護的$表=「mssql_table」;}''類模型名擴展雄辯{保護$連接='db2';}'或我做一個新的模型?而且我應該使schema :: connection? – hendraspt

+0

我做了一個新的連接,如OT所示,並添加了$ connection =「mssql」;在那個特定的MODEL中。關於你是否應該使用Schema ::連接,這取決於你如何處理你的數據庫結構。 –

相關問題