如何在laravel 5关系模型中传递条件



我试图从组模型中获取数据,但我将学生表new_group_id与组表id相关联,如果它不是null,否则将group_id连接到组表id。

public function grade(Builder $query)
{
return $query
->when($this->new_group_id != 0, function ($q) {
return $q->with('new_group_id');
})
->when($this->new_group_id === 0, function ($q) {
return $q->with('group_id');
});
}

但是如果错误是

传递给AppStudents::grade()的参数1必须是的实例App Builder

请帮我解决这些错误

看起来好像你正在使用一个查询范围,Laravel将解析并通过服务容器注入Builder的实例到你的函数中。

要做到这一点,您需要遵循Laravel的约定,即在本地作用域前面加上单词scope:

public function scopeGrade($query)
{
return $query
->when($this->new_group_id != 0,function($q){
return $q->with('new_group_id');
})
->when($this->new_group_id === 0,function($q){
return $q->with('group_id');
});
}

最新更新