【发布时间】:2017-07-28 18:40:16
【问题描述】:
我有以下查询(简化):
$q = ModelOne::with('relation_one', 'relation_two')
->whereHas('relation_three', function ($q) {
$q->where('object', 'Obj1');
})
->whereHas('relation_four', function ($q) {
$q->where('object', 'Obj2');
})
->get();`
它可以很好地加载relation_one 和relation_two 关系,我还需要为每行加载另一个关系,relation_three 或relation_four,具体取决于ModelOne->object 的值。
我遇到的问题是ModelOne 来自schema1,而relation_three 和relation_four 中使用的表来自schema2。
两个模型都正确设置了各自的 protected $connection 和 protected $table 变量。
我收到的错误是 relationship_three 或 relationship_four 的表不存在,因为子查询正在检查错误的架构。
谁能建议如何解决这个问题?浏览了文档,但找不到解决方案。
【问题讨论】:
-
您可以加载这两个关系并在逻辑中使用正确的关系。另外,
schema1和schema2是什么?不同的数据库? -
我会尝试同时加载两者,看看是否能以我需要的方式获得结果,如果由于两个表包含相同的 ID 而加载了两个关系可能会导致问题,但需要使用原来如此。
-
是的,
schema1和schema2是不同的数据库,由于现有的业务逻辑,需要保持这种状态。 -
我认为这个问题最好用
polymorphism解决:让多个子模型基于schema2扩展1个基础模型
标签: php mysql laravel laravel-5 eloquent