Laravel 5.1,如何在模型中建立动态数据库连接


Laravel 5.1, how to have a dynamic database connection in model

我正在使用一个自己创建的包。此套装包括一些型号。这些模型应该连接到APP数据库,但由于它是一个包,数据库名称可能不同。

为了解决这个问题,我的包包含一个配置文件,其中存储了数据库名称(连接名称)。

在配置文件中:

return [ 'app_model_db_connection' => 'first_database' ];

这很好,我可以通过以下操作获取配置值:Config::get('myconfig.app_model_db_connection);

现在我想在我的模型中做到这一点:

protected $connection = 'Config::get('package_customview.app_model_db_connection');

但这并不奏效。错误:syntax error, unexpected '(', expecting ',' or ';'

看起来我只能在$connection =之后添加一个字符串。因为当我这样做的时候:protected $connection = "first_database",它是有效的。但是我想从我的配置文件中获取这个值。这有可能吗?

是的,你只需要把它放在模型的构造函数中。

public function __construct(array $attributes = [])
{
    parent::__construct($attributes);
    $this->connection = 'Config::get('package_customview.app_model_db_connection');
}