Вывод товара по категориям

87
20 апреля 2022, 19:40

Всем привет!

Вроде заезженая тема, но я никак не могу допереть, что я делаю не так.

В общем есть таблица categories.

Так же есть таблица products, которая посредством category_id связана с таблицей categories.

Так же их модели: Product

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

и Category

class Category extends Model
{
  public function products()
  {
      return $this->hasMany(Product::class);
  }
}

И наконец шаблон:

@section('content')
<section class="section-category">
  <div class="container-lg">
    <div class="row">
        @foreach($categories as $category)
        <div class="col-lg-2 col-md-4 col-sm-6">
              <a href="/{{ $category->url }}" class="btn btn-lg btn-success catbtn" type="button">
              <img class="catbtnimg" src="/img/categories/{{ $category->img }}">
            </a>
            <h6 class="text-center text-success">{{ $category->name }}</h6>
        </div>
      @endforeach
    </div>
  </div>
</section>
<section class="section">
  <div class="container">
      <div class="row">
        @foreach($categories as $product)
          @foreach($product->products as $item)
            @include('card', compact('item'))
          @endforeach
        @endforeach
      </div><!--end row-->
  </div><!--end container-->
</section>
@endsection

Шаблон card, который подключается через @include выглядит так:

<div class="col-lg-3 col-md-3 col-sm-6 col-6">
  <div class="card mb-5">
    <img class="card-img-top" src="/img/products/{{ $item->cardImage->path }}" alt="Card image cap">
    <div class="card-body">
      <h5 class="card-title  text-center">{{ $item->name }}</h5>
      <div class="prch"><span class="card-text">{{ $item->price }}</span><span class="card-text"><i class="{{ $item->is_available_icon }}"></i>{{ $item->is_available_text }}</span></div><br>
      <div class="prch second">
      <span><i class="fa fa-star"></i>
      <i class="fa fa-star"></i>
      <i class="fa fa-star"></i>
      <i class="fa fa-star"></i>
      <i class="fa fa-star"></i></span>
      <span class="card-text feedback">10 отзывов</span>
      </div>
    </div><!--end card-body-->
    <div class="card-footer"></div>
    <div class="text-center"><i class="fa fa-handshake"></i><span class="reg">Оформило 10 человек</span><br>
    <a href="#" class="btn btn-success mt-2 mb-1">Оформить сейчас!</a>
    </div>
  </div><!--end card-->
</div>

Роут выглядит так:

Route::get('/{categories}', 'MainController@categories');

А контроллер так :

public function categories($code){
    $categories = Category::where('code', $code)->get();
    return view('categories', compact('categories'));
  }

И наконец вопрос. Когда перехожу в категории вижу следующее:

Когда я выбираю, к примеру, первую категорию вижу следующее:

И проблема уже в конкретной подкатегории. Когда я выбираю её, товары этой категории не выводятся(просто пустое пространство на месте где были категории).

Как это исправить не знаю (опыта пока не так много), если у кого есть какие то мысли, с радостью выслушаю.

Заранее спасибо!

READ ALSO
Как создать таблицу сериалов в phpMyAdmin

Как создать таблицу сериалов в phpMyAdmin

пните меня в нужном направлении, например есть какой-либо сериал, сериал как принято делится на сезоны а сезоны в свою очередь на серииЗадача...

143
Как редактировать single-product в woocommerce?

Как редактировать single-product в woocommerce?

Столкнулся с тем, что нужно кастомизировать страничку, которая открывается при переходе на товар(Single-Product)Подскажите, пожалуйста, как правильно...

221
Страница пользователя php, mysql

Страница пользователя php, mysql

Суть в том, чтобы только что зарегистрированный пользователь попал на чистую, незаполненную страницу, адрес которой wwwexample

89
Как сделать обычную страницу архивной

Как сделать обычную страницу архивной

У меня есть кастомный тип записи stories, и страница gallery на которой выводятся превью этих записейПри переходе к записям адрес выходит таким...

73