фильтровать продукты в иерархических категориях с продуктами с laravel - PullRequest
0 голосов
/ 16 марта 2020

это в laravel 6.x Я сделал иерархические категории в одной и той же таблице зависимыми от parent_id, в каждой категории много подкатегорий и в каждой категории много товаров, я сделал фильтрацию по товарам, когда пользователь щелкает в категории, это показывает категорию с все это подкатегории с ними продукты все вещи верны. но проблема с подкатегориями продуктов, которые они не фильтруют, как продукты категорий и продуктов подкатегорий. в чем проблема.? Это мощный способ для этой работы .?

это отношения в модели категории

    public function subcategory()
    {
     return $this->hasMany(self::class,'parent_id','id');
    }

public function products()
        {
            return $this->hasMany('App\product','category_id','id');
        }

public function parentId()
    { 
        return $this->belongsTo(self::class);
    }

 public function scopeCatItem($query , $id)
        {
            return $query->where('id', $id);
        }

и этот код в контроллере category_products

     $data = Category::CatItem($request->catid)->withTranslations($locale)
         ->with([ // start with
      'products' => function($query) use ($company , $volt) { // first parameter
              $query->when($company , function($query) use ($company){
                  $query->where('company_id', $company);
                  });
              $query->when($volt , function($query) use ($volt){
                  $query->where('volt', $volt);
                  });
            },
      'subcategory'  => function($query) use ($company, $volt) {  // second parameter          
            $query->whereHas('products', function ($query) use ($company , $volt) {
              $query->when($company , function($query) use ($company){
                    $query->where('products.company_id', $company);
                  });
              $query->when($volt , function($query) use ($volt){
                    $query->where('products.volt', $volt);
                  });
            });         
      },
      'subcategory.products' => function($query) use ($company, $volt) { // third parameter
              $query->when($company , function($query) use ($company){
                    $query->where('products.company_id', $company);
                 });
               $query->when($volt , function($query) use ($volt){
                    $query->where('products.volt', $volt);
                 });                      
         },
    ]) // close with
    ->get();

это код в представлении файл лезвия продуктов

  @if(count($item->subcategory))
    @include('panels.frontend.sub-filtered_products',['subcategories' => $item->subcategory])
  @endif
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...