首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >拉勒维尔雄辩地热切地加载着另一种连接

拉勒维尔雄辩地热切地加载着另一种连接
EN

Stack Overflow用户
提问于 2015-02-09 19:18:06
回答 5查看 3.3K关注 0票数 2

我试图用Laravel雄辩的ORM在两种不同的联系上做一个简单的一对一的关系。

让我这么说吧:

代码语言:javascript
运行
复制
MyModel::on('secondary_connection')->get()

效果很好。

当我这么做时:

代码语言:javascript
运行
复制
MyModel::on('secondary_connection')->with('AnotherModel')->get();

我得到了一个错误,因为雄辩是在默认连接上执行AnotherModel SELECT语句(而不是"secondary_connection")。

我找不到解决这个问题的办法。

我的模型是很好的定义,因为我可以加入他们在我的默认连接。

思想?

EN

Stack Overflow用户

回答已采纳

发布于 2015-02-10 19:18:36

嗯,正如许多用户所建议的那样,似乎没有办法在飞行中做到这一点。我对此的理解是,当涉及到管理多个连接时,雄辩是不完整的。

我想有两种方法可以解决这个问题。

首先,在模型中指定连接:

代码语言:javascript
运行
复制
class MyModel {
    $protected connection = 'secondary_connection';
}

这显然是一个糟糕的解决办法,因为这个模型只能在一个连接中使用.但仍然有效。

然后,正如Jarek所建议的那样,可以使用新的连接来切换default连接。但是,与其在配置文件中执行此操作,还可以交换PDO对象。

代码语言:javascript
运行
复制
    $default = DB::getPdo(); // Default conn
    $secondary = DB::connection('secondary_connection')->getPdo();
    DB::setPdo($secondary);
    $result = MyModel::with('AnotherModel')->get();
    DB::setPdo($default);

这是一个可行的解决办法,可以是一个干净的解决方案。下一步是把开关机构在一个很好的拉拉维尔方式。

票数 3
EN
查看全部 5 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28417546

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档