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

哦,非常接近..非常感谢您的帮助。这就是诀窍。 –

相关问题