Laravel 5如何更改控制器内的模型数据库连接(Laravel 5 How to change

2019-10-30 08:50发布

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

所以,我有几种模式与外部的MS-SQL数据库的连接。

这个模型看起来就像这样:

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

到现在为止,一切都OK,应用支持两个数据库。

我想改变控制器内$连接变量假设

version_Jato-> $connection = 'sqlJato2'.

这可能吗?

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

非常感谢您的关注!

Answer 1:

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

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

资源



Answer 2:

我不知道够不够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();


文章来源: Laravel 5 How to change a model database connection within controller