Я пытаюсь добавить новый метод для упрощения и повторного использования кода, но мне это не удалось.
Модель пользователя:
public function products()
{
return $this->hasMany('App\Product');
}
public function obsolate()
{
return $this->where('status', 'obsolate');
}
Когда я пытаюсь получить, например, auth()->user()->products()->obsolate()
, появляется некоторая ошибка, например
BadMethodCallException: вызов неопределенного метода Illuminate \ Database \ Eloquent \ Relations \ HasMany :: obsolate ()
Но Если мне нравится auth()->user()->products()->where('status', 'obsolate')->get()
Работает.
Пожалуйста, поправьте меня, если я ошибаюсь ...
ОБНОВЛЕНИЕ
Модель продукта:
public function user()
{
return $this->belongsTo('App\User');
}
public function scopeObsolate($query)
{
return $query->where('status', 'obsolate');
}
Я делаю auth()->user()->products->obsolate()->get()
, и это работает!
Но, если я хочу использовать группу ограничений для решения этой проблемы , он вернет ошибку
public function scopeObsolate(Builder $builder)
{
return $builder->where(function (Builder $query) {
return $query->where('status', 'obsolate');
});
}
Аргумент 1, переданный в App \ Product :: App {closure} (), должен быть экземпляром App \ Builder, заданным экземпляром Illuminate \ Database \ Eloquent \ Builder
РЕШЕНО
use Illuminate\Database\Eloquent\Builder