在从辅助数据库获取模型实例之前,我试图在 Laravel 4 中设置模型正在使用的连接。我已经在 Config/database.php
中正确填写了辅助连接的信息,但是由于某些原因,当我调用 $userModel-> 时,Laravel 会恢复到默认连接所有()
$userModel = new User;
$userModel->setConnection('secondary_connection');
$users = $userModel->all();
哪个给出了错误
SQLSTATE[42S02]:未找到基表或 View :1146 表“boadmin_master.users”不存在(SQL:从“用户”中选择 *)(绑定(bind):数组 ())
我已经追溯到可能由于 Model::all()
函数中的一些代码而发生的事情:
* @param array $columns
* @return \Illuminate\Database\Eloquent\Collection|static[]
*/
public static function all($columns = array('*'))
{
$instance = new static;
return $instance->newQuery()->get($columns);
}
所以我的问题是,如何让 Laravel 尊重我使用我在 $userModel->setConnection('secondary_connection')
中提供的连接名称的愿望?
最佳答案
Eloquent 的 all()
将在执行方法 all() 之前创建一个新模型,因此您需要告诉它静态选择一个连接,但您试图通过实例化动态地进行在调用 all()
之前你的模型。
你试过这个吗?
User::on('secondary_connection')->get();
关于php - 在 Laravel 4 模型上使用 setConnection,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20320077/