如何使用Laravel选择所有关系都将特定属性设置为特定值的模型?

时间:2015-07-14 09:29:33

标签: php sql laravel eloquent relational-database

通常,我处理查询我有两个模型,我只需要选择一个带有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');
    }
}

如您所见,PartPartFlight之间存在1:m的关系。

我想要的是一个非贪婪的匹配,以选择所有Part所有PartFlight都将landed属性设置为{{{{ 1}}。我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:1)

我建议您检查一下是否true,而不是试图查明是否所有false;

$parts = Part::whereDoesntHave('partFlights', function($q){
    $q->where('landed', false);
})->get();