可以在另一个`whereHas`中使用`whereHas`查询的结果吗?

时间:2016-12-18 13:15:02

标签: laravel-5 eloquent

我想用另一个子查询的结果(它们共享相同的关系)来过滤一个子查询的结果。像这样:

modelA::whereHas('modelB', function ($query) {
    $query->select('modelC_id');
})
->whereHas('modelD', function ($query) {
    $query->where('field', 'modelC_id')
});

对于此示例,假设以下关系:

  • modelA->的hasMany(' modelB&#39)
  • modelA->的hasMany(' modelD&#39)
  • modelB-> hasOne(' modelC&#39)
  • modelD-> hasOne(' modelC&#39)

模型和关系都按预期工作,但我希望modelA通过modelB查找modelC值,然后使用它来通过modelD过滤modelC上的查找。

我可以通过查找值并在第二个查询中使用它来完成所有这些操作,但如果我可以在一个语句中使用它(因为可以在查询中查找值!),这样会很好。所以我可以在modelA上创建一个本地范围。

另一种选择是将相关字段添加到结果集中,然后我可以在where - 查询中使用,但我无法弄清楚如何在结果集中获取modelC_id ... < / p>

这可能吗?

0 个答案:

没有答案