如何 select 模型,其中所有关系都将特定 属性 设置为具有 Laravel 的特定值?
How to select models where all relations have a specific property set to a specific value with Laravel?
通常,我正在处理查询我有两个模型,我只需要 select 一个带有 whereHas
查询的模型,这是一个贪婪的条件,因为它 select 尽可能多的匹配。
这是我的两个模型:
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 关系。
我想要的是 select 所有 Part
的非贪婪匹配,其中所有 PartFlight
的属性 landed
设置为 true
。我怎样才能做到这一点?
而不是试图找出是否所有都是 true
我建议你检查 none 是否是 false
;)
$parts = Part::whereDoesntHave('partFlights', function($q){
$q->where('landed', false);
})->get();
通常,我正在处理查询我有两个模型,我只需要 select 一个带有 whereHas
查询的模型,这是一个贪婪的条件,因为它 select 尽可能多的匹配。
这是我的两个模型:
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 关系。
我想要的是 select 所有 Part
的非贪婪匹配,其中所有 PartFlight
的属性 landed
设置为 true
。我怎样才能做到这一点?
而不是试图找出是否所有都是 true
我建议你检查 none 是否是 false
;)
$parts = Part::whereDoesntHave('partFlights', function($q){
$q->where('landed', false);
})->get();