2016-09-30 82 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 

更新與型號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子類別的ID。這不會失敗,因爲你用sub_cat_id = 1調用它,並且巧合的是,該ID存在於數據庫中。

如果你的關係是建立正確的,這應該工作:

控制器

<?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

哦,非常接近..非常感謝您的幫助。這就是訣竅。 –

相關問題