0

我正在尝试从组模型中获取数据,但new_group_id如果学生表不为空,我会将学生表与组表 ID 相关联,否则将其连接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');
        });
}

但鉴于错误是

传递给 App\Students::grade() 的参数 1 必须是 App\Builder 的一个实例

请帮我解决这些错误

4

1 回答 1

0

看起来好像您正在使用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');
      });
}
于 2021-08-19T09:31:40.183 回答