是否可以通过相关模型过滤Laravel的Eloquent ORM中的结果集?我知道Eloquent没有加入表格,但我想要的结果类似于:
SELECT *
FROM tickets
JOIN statuses on tickets.status_id = statuses.id
WHERE statuses.name != ‘Closed’;
我在Eloquent找到的最接近的功能是:
$tickets = Ticket::with(array('status' => function($q) {
return $q->where('name', '!=', 'Closed');
}))->get();
如果名称未关闭,这仍将返回所有票证,但仅返回状态关系.
另外,我知道这可以在Fluent中完成,但我想使用Eloquent提供的返回的嵌套对象结构:
echo ticket->status->name;
Fluent返回展平结果作为联接查询.
最佳答案
看起来这个问题已经过时了,但如果你在这里看到一个真正的答案,我们应该尽量避免过多地查询数据库,接受的答案是两次,但你可以通过一次拍摄来完成这个
$tickets = Ticket::with('status')->whereHas('status', function($q) {
return $q->where('name', '!=', 'Closed');
})->get();
相关文章
转载注明原文:orm – 雄辩的关系过滤 - 代码日志