通常情况下,我处理的查询我有两个模型,我只需要选择一个模型与whereHas
查询,这是一个贪婪的条件,因为它选择尽可能多的匹配。
这是我的两个模型:
class Part extends Eloquent {
protected $table = 'parts';
protected $primaryKey = 'part_id';
public function partFlights() {
return $this->hasMany('PartFlights');
}
}
和
class PartFlight extends Eloquent {
protected $table = 'part_flights_pivot';
protected $primaryKey = 'part_flight_id';
public function part() {
return $this->belongsTo('Spacecraft');
}
}
可以看出,Part
和PartFlight
之间的关系是1:m。
我想要的是一个非贪婪匹配来选择所有Part
's,其中所有PartFlight
's的属性landed
设置为true
。我怎样才能做到这一点呢?
而不是试图找出是否都是true
我建议你检查是否没有false
;)
$parts = Part::whereDoesntHave('partFlights', function($q){
$q->where('landed', false);
})->get();