我想用另一个子查询的结果(它们共享相同的关系)来过滤一个子查询的结果。像这样:
modelA::whereHas('modelB', function ($query) {
$query->select('modelC_id');
})
->whereHas('modelD', function ($query) {
$query->where('field', 'modelC_id')
});
对于此示例,假设以下关系:
模型和关系都按预期工作,但我希望modelA通过modelB查找modelC值,然后使用它来通过modelD过滤modelC上的查找。
我可以通过查找值并在第二个查询中使用它来完成所有这些操作,但如果我可以在一个语句中使用它(因为可以在查询中查找值!),这样会很好。所以我可以在modelA上创建一个本地范围。
另一种选择是将相关字段添加到结果集中,然后我可以在where
- 查询中使用,但我无法弄清楚如何在结果集中获取modelC_id
... < / p>
这可能吗?