簡體   English   中英

Laravel 5如何在控制器內更改模型數據庫連接

[英]Laravel 5 How to change a model database connection within controller

我的應用程序應該連接到內部和兩個外部商業SQL數據庫。

因此,我有幾種與外部MS-SQL數據庫連接的模型。

該模型如下所示:

class version_Jato extends Model
{
    //
    protected $connection = 'sqlJato';
    protected $table = 'version';
....
}

到目前為止,一切正常,應用程序可用於兩個數據庫。

我想更改控制器內的$ connection變量,例如

version_Jato-> $connection = 'sqlJato2'.

這可能嗎?

因為我有兩個結構相同的SQL數據庫,但它們之間的數據不同,因此我不想將所有模型和控制器中的代碼加倍。

非常感謝您的關注!

我對Laravel不夠了解,無法確定它是否真的可以工作(例如,它將實際切換數據庫),但是普通的舊式OOP告訴我可以這樣編程:

模型

const SQL_JATO = 'sqljato';
const SQL_JATO_TWO = 'sqljato2'

public function setDbConnection(string $connection)
{
    $this->connection = $connection;
}

控制者

$jato = new version_jato([$attributes]); // Put something in here
$jato->setDbConnection(version_jato::SQL_JATO_TWO);
$jato->save();

您可以使用on()靜態方法切換連接:

YourModel::on('connection_name')->get();

資源

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM