我有两个模型,它们之间有一对多的关系: 预订属于一家公司。公司可以有多个预订。
我知道想查询公司有特定参数集的所有预订。所以我尝试了这个查询,但它只能部分工作。它会丢弃被排除的公司信息,但它不会从结果集中删除保留。
$result = Reservations::with(['company' => function($query) {
$query->where('kind_of','=','r');
}])->get();
它仍然返回不符合with语句中where子句的保留。只有额外的预先加载的数据不再被加载。
如何排除与sql-clause匹配的保留:
... WHERE company.kind_of = 'r'
答案 0 :(得分:0)
这对你有用吗?
$result = Company::with('reservations')->where('kind_of','=','r')->get();
答案 1 :(得分:0)
您需要使用whereHas
方法根据关系的存在来执行查询,然后您需要记住使用with
急切加载公司本身。
$result = Reservations::whereHas('company', function($query) {
$query->where('kind_of','r');
})->with('company')->get();