我试图用Laravel雄辩的ORM在两种不同的联系上做一个简单的一对一的关系。
让我这么说吧:
MyModel::on('secondary_connection')->get()效果很好。
当我这么做时:
MyModel::on('secondary_connection')->with('AnotherModel')->get();我得到了一个错误,因为雄辩是在默认连接上执行AnotherModel SELECT语句(而不是"secondary_connection")。
我找不到解决这个问题的办法。
我的模型是很好的定义,因为我可以加入他们在我的默认连接。
思想?
发布于 2015-02-10 19:18:36
嗯,正如许多用户所建议的那样,似乎没有办法在飞行中做到这一点。我对此的理解是,当涉及到管理多个连接时,雄辩是不完整的。
我想有两种方法可以解决这个问题。
首先,在模型中指定连接:
class MyModel {
$protected connection = 'secondary_connection';
}这显然是一个糟糕的解决办法,因为这个模型只能在一个连接中使用.但仍然有效。
然后,正如Jarek所建议的那样,可以使用新的连接来切换default连接。但是,与其在配置文件中执行此操作,还可以交换PDO对象。
$default = DB::getPdo(); // Default conn
$secondary = DB::connection('secondary_connection')->getPdo();
DB::setPdo($secondary);
$result = MyModel::with('AnotherModel')->get();
DB::setPdo($default);这是一个可行的解决办法,可以是一个干净的解决方案。下一步是把开关机构在一个很好的拉拉维尔方式。
https://stackoverflow.com/questions/28417546
复制相似问题