Laravel 5如何在控制器内更改模型数据库连接

时间:2018-07-10 12:02:22

标签: php sql laravel-5

我的应用程序应连接到内部和两个外部商业SQL数据库。

因此,我有几种模型可以连接到外部MS-SQL数据库。

模型看起来像这样:

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

直到现在,一切正常,应用程序可以使用两个数据库。

我想更改控制器内的$ connection变量,让我们说

version_Jato-> $connection = 'sqlJato2'.

这可能吗?

因为我有两个结构相同的SQL数据库,只是它们之间的数据不同,所以我不想将所有模型和控制器中的代码加倍。

非常感谢您的关注!

2 个答案:

答案 0 :(得分:1)

我对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();

答案 1 :(得分:1)

您可以使用on()静态方法切换连接:

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

Source