Аргумент 1, переданный в Illuminate \ Support \ Collection :: filter (), должен быть вызываемым или иметь значение null, заданный объект, вызываемый в - PullRequest
0 голосов
/ 05 августа 2020

Я следую руководству по написанию 1 класса для фильтрации продуктов в приложении форума. Я получил эту ошибку в строке

$ Products = $ Category-> products-> filter ($ filter);

Аргумент 1, переданный в Illuminate \ Support \ Collection :: filter (), должен быть вызываемым или иметь значение null, объект задан, вызывается в ...

link = https://pineco.de/filtering-eloquent-queries-based-on-http-requests/

ProductsController с методом индекса:

  public function listProduct(CategoryTranslation $category, ProductFilter $filter)
{

    $Setting  = Setting::first();
    $Category = $category->base()->first();
    // ORM ERROR Use filter   <--
    $Products = $Category->products->filter($filter);

    return view($this->dir.'products', [
      'Setting'     => $Setting,
      'Category'    => $Category,
      'Products'    => $Products,
    ]);
}

Модель категории

    public function products() {
    return $this->belongsToMany(Products::class, 'category_products', 'category_id' ,'products_id')->where('status',true);
}
...

Модель продукта

    public function category() {
    return $this->belongsTo(Category::class);
}    

public function Categories()
{
    return $this->belongsToMany(Category::class, 'category_products','products_id', 'category_id');
}
...

Illuminate \ Support \ Collection :: filter ( )

    public function filter(callable $callback = null)

{

    if ($callback) {

        return new static(Arr::where($this->items, $callback));

    }



    return new static(array_filter($this->items));

}
...