通常,我处理查询我有两个模型,我只需要选择一个带有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
所有PartFlight
都将landed
属性设置为{{{{ 1}}。我怎样才能做到这一点?
答案 0 :(得分:1)
我建议您检查一下是否true
,而不是试图查明是否所有false
;
$parts = Part::whereDoesntHave('partFlights', function($q){
$q->where('landed', false);
})->get();