首页 > 解决方案 > whereHas 不适用于 NULL 值

问题描述

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

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

标签: apieloquentwhere-clauselaravel-5.5eager-loading

解决方案


您必须两次指定约束:

$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();

推荐阅读