[英]Laravel Dynamic model database
我有一個用於數據庫表的模型,基本上是一個表,但是在不同的數據庫中,如何在模型中設置到數據庫的連接?
protected $connection = 'ls';
上面的代碼不是我要找的,我需要傳遞主機,端口,用戶名和密碼。 因為連接存儲在DB中而不是配置文件中。 我在想function __construct()
並像Model($data)::where()..etc
這樣調用
還是我想錯了方向,有人可以給我一個更好的主意嗎?
您可以通過維護以下方面從Eloquent模型進行連接
首先,您可以在database.php
文件中定義多個連接
<?php
return array(
'default' => 'mysql',
'connections' => array(
# Our primary database connection
'mysql' => array(
'driver' => 'mysql',
'host' => 'host1',
'database' => 'database1',
'username' => 'user1',
'password' => 'pass1'
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
),
# Our secondary database connection
'mysql2' => array(
'driver' => 'mysql',
'host' => 'host2',
'database' => 'database2',
'username' => 'user2',
'password' => 'pass2'
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
),
),
);
您的默認連接仍設置為mysql
。 這意味着,除非我們另外指定,否則應用程序將使用該mysql
連接。
現在,您可以在模型中指定要使用的連接
<?php
class SomeModel extends Eloquent {
protected $connection = 'mysql2';
}
您也可以在運行時通過setConnection方法定義連接。
<?php
class SomeController extends BaseController {
public function someMethod()
{
$someModel = new SomeModel;
$someModel->setConnection('mysql2');
$something = $someModel->find(1);
return $something;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.