Laravel 5.8 中 hasMany 关系的条件

Posted

技术标签:

【中文标题】Laravel 5.8 中 hasMany 关系的条件【英文标题】:where Has Condition on a hasMany relationship in Laravel 5.8 【发布时间】:2020-05-03 06:10:52 【问题描述】:

我在一个模型 FeeModuleModel 中有如下关系

   public function heads()
   
       return $this->hasMany('App\Models\FeeHeadModel','location_id','id');
   

在我的控制器文件中,我只需要获取 FeeHeadModel 类型为非结构化的值 FeeModuleModel 我的控制器代码如下所示

$modules = FeeModuleModel::where('vt_ay_id', '=', Session::get('sess_ay_id'))->with(['heads'=>function($q) 
            $q->where('type','=','unstructured');
        ])->orderby('priority', 'asc')->get();

这会失败并出现以下错误

调用数组上的成员函数 getRelationExistenceQuery()

我的代码有什么问题以及我可以做些什么来解决它

【问题讨论】:

【参考方案1】:

请将您的代码更改为这个

$modules = FeeModuleModel::with(['heads'=>function($q) 
            $q->where('type','=','unstructured');
        ])->where('vt_ay_id', '=', Session::get('sess_ay_id'))->orderby('priority', 'asc')->get();

【讨论】:

以上是关于Laravel 5.8 中 hasMany 关系的条件的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 关系查询加载 hasMany + BelongsToMany

如何从 Laravel 中的 hasMany() 关系中获取所有结果?

Laravel 多对多关系( hasMany 或 belongsToMany )

如何在 Laravel 8 中获取与 json 有一个 hasMany 关系的表的所有模型?

在laravel 5.1单元测试中嘲笑hasMany关系

Laravel按hasmany关系排序