我有两个表,类别和产品。每个类别都有id和name。每个产品都有id,name和category id。现在,我想在每个选项卡上显示用户点击特定category_id.so相关产品时在每个选项卡上加载数据。我已经尝试但无法获得解决方案。
类别模型:
class Category extends Model
{
public function products()
{
return $this->hasMany('App\Product');
}
}
产品型号:
class Product extends Model
{
public function category()
{
return $this->belongsTo('App\Category');
}
}
这是我的控制器:
public function gettestItem() {
$categories = Category::with('products')->get();
return view('products', compact('categories'));
}
以下是观点:
<div class="container">
<div id="content">
<ul id="tabs" class="nav nav-tabs" data-tabs="tabs">
@foreach ($categories as $category)
<li><a href="#{{$category->id}}" data-toggle="tab" >{{$category->name}}</a></li>
@endforeach
</ul>
<div id="my-tab-content" class="tab-content">
@foreach($categories as $category)
@foreach($category->products as $product)
<div class="tab-pane " id="{{$category->id}}">
{{$product->name}}
</div>
@endforeach
@endforeach
</div>
</div>
</div>
这是路线:
Route::get('/testItem',[
'uses'=>'ItemController@gettestItem',
'as'=>'testItem'
]);
如果有人能帮我解决问题将不胜感激。
答案 0 :(得分:1)
如果您已正确定义了架构和关系,则函数应为:
public function gettestItem() {
$categories = Category::with('products')->get();
return view('products', compact('categories'));
}
然后您可以访问每个类别的产品:
foreach ($categories as $category) {
$category->product; // gives all products corresponding to $category
}
另请阅读Docs
<强>更新强>
你的第二个foreach
应该是:
<div id="my-tab-content" class="tab-content">
@foreach($categories as $category)
<div class="tab-pane" id="{{$category->id}}">
@foreach($category->products as $product)
<div>
{{$product->name}}
</div>
@endforeach
</div>
@endforeach
</div>
您还可以使用以下代码仅获取具有相应categories
的{{1}}代码:
products