2016-09-30 6 views
2

Я создал администратору возможность создавать несколько категорий по подкатегориям. Теперь я хочу показать каждый продукт, присвоенный категории.Отдельные продукты в разных подкатегориях на странице с Laravel

Проблема в том, что каждая под-подгруппа показывает тот же продукт. Скорее всего, проблема лежит в базе данных и способ их хранения, но я не уверен, где именно

До сих пор это мой контроллер

public function showCategoryInfo($subcatId) { 

$dual = DualSubCategories::where('sub_cat_id', '=', $subcatId)->get(); 
$dual_products = DualSubCategories::with('products')->findOrFail($subcatId); 

    $subcat1 = SubCategories::with('products')->findOrFail($subcatId); 
     return View::make('site.single_subcategory', [ 
      'dual' => $dual, 
      'dual_products' => $dual_products 
     ]); 
} 

Это мой взгляд

@foreach($dual as $dual_info) 

    <h3>{{ $dual_info['dual_sub_cat_name'] }}</h3> 
     <div class="row"> 
     <div class="table-responsive"> 
      <table class="table table-bordered"> 
       <tbody> 

        @foreach($dual_products->products as $i => $product) 
         <tr> 
          <td>{{ $product['title'] }}</td>             
         </tr> 
        @endforeach 

       </tbody> 
      </table> 
     </div> 
@endforeach 

Этот это то, что у меня есть в моей модели

public function subcategory() 
    { 
     return $this->belongsTo('SubCategories', 'sub_cat_id'); 
    } 

    public function products() 
    { 
     return $this->hasMany('Product', 'dual_sub_cat_id'); 
    } 

таблицы выглядит следующим образом

// dual_category 
dual_sub_cat_id sub_cat_id dual_sub_cat_name 
    1    1   test 1 
    2    1   test 2 

// sub_category 
sub_cat_id sub_cat_name 
    1   name 1 

// products 
product_id sub_cat_id dual_sub_cat_id 
    1    1    1 
    2    1    2 

Из таблицы products У меня есть 2 модели же подкатегорию, и когда я открываю подкатегорию с sub_cat_id = 1 Я хочу видеть на странице

test 1 
product_id 1 

test 2 
product_id 2 

Но я вижу

test 1 
product_id 1 

test 2 
product_id 1 

UPDATE с моделями DualSubCategories Модель

public function subcategory() 
{ 
    return $this->belongsTo('SubCategories', 'sub_cat_id'); 
} 

public function products() 
{ 

    return $this->hasMany('Product', 'dual_sub_cat_id'); 
} 

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

public function category() 
{ 
    return $this->belongsTo('Category', 'category_id'); 
} 

public function products() 
{ 

    return $this->hasMany('Product', 'sub_cat_id'); 
} 

Продукты Модель

public function categories() 
{ 
    return $this->hasMany('Categories', 'category_id'); 
} 
+0

Как данные извлекаются из базы данных? –

+0

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

ответ

2

Есть несколько вещей происходит не так:

Вы делаете петлю и вложенный цикл. Когда верхний цикл петли второй раз, он выполняет внутренний цикл с теми же данными, что и первый цикл. $dual_products не меняется второй или третий раз. Он не зависит от верхнего контура.

Но это не объясняет, почему вы видите один продукт. В контроллере вы вызываете $dual_products = DualSubCategories::with('products')->findOrFail($subcatId);. Это извлекает один (findOrFail) DualSubCategory с идентификатором Подкатегория. Это не сработает, потому что вы вызвали его с помощью sub_cat_id = 1 и, по совпадению, этот идентификатор существует в базе данных.

Если ваши отношения настройки правильно, это должно работать:

Контроллер

<?php 
$dual = DualSubCategories::where('sub_cat_id', $subcatId)->with('products')->get(); 
return View::make('site.single_subcategory', ['dual' => $dual]); 

Мы получаем DualSubcategories с продуктами нетерпеливый нагруженных и присваивают, что в представлении.

Посмотреть

@foreach($dual as $dual_info) 
    <h3>{{ $dual_info->dual_sub_cat_name }}</h3> 
     @foreach($dual_info->products as $i => $product) 
      {{ $product->title }} 
    @endforeach 
@endforeach 

В цикле зрения мы над DualSubcategories и отобразить имя. Каждый цикл, мы перебираем продукты в этой DualSubcategory и отображаем его название. (Я просто удалил форматирование)

+0

О, так близко .. Большое спасибо за помощь. Это трюк. –

 Смежные вопросы

  • Нет связанных вопросов^_^