php - 在 Laravel 4 模型上使用 setConnection

标签 php mysql model laravel laravel-4

在从辅助数据库获取模型实例之前,我试图在 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/

相关文章:

php - Laravel 5.5 AJAX 实时数据搜索不起作用

MYSQL 查询减号运算符不起作用

mysql - 如何在mysql查询php中获取minprice的id

mysql - 用mysql计算余额

asp.net-mvc - ASP.NET MVC 如何将自定义模型绑定(bind)到 View

django - 有人认为 django 的用户模型与身份验证耦合得太紧了吗?

php - 使用 jWindowCrop 裁剪图像 - PHP

php - 当 SFTP 主机无效时如何获取正确的错误消息

php pconnect 与连接

python - django - 允许用户在数据库中设置某些内容