whereHas不处理NULL值

时间:2018-05-24 08:18:26

标签: api eloquent where-clause laravel-5.5 eager-loading

在laravel 5.5中whereHas()不在value为NULL的地方工作。我与其他模型的关系是一对多,我想从模型中选择值等于NULL的值。但不是返回特定值,而是返回结果中的所有值

{{1}}

2 个答案:

答案 0 :(得分:1)

您必须指定两次约束:

$plans = Plan::with(['objectives' => function($query) {
        $query->whereNull('entity_id');
        $query->whereNull('quarter_id');
    }, 'objectives.keyResults'])
    ->whereHas('objectives', function($query) {
        $query->whereNull('entity_id');
        $query->whereNull('quarter_id');
    })->where('companyKey', Auth::user()->companyKey)
    ->get();

答案 1 :(得分:0)

不需要双重约束,只需将其简化为:

$plans = Plan::whereHas('objectives', function($query) {
        $query->whereNull('entity_id');
        $query->whereNull('quarter_id');
    })->with(['objectives'])
       ->where('companyKey', Auth::user()->companyKey)
       ->get();