我有这样的表结构:
这是我的控制者:
public function kategori($id, $slug)
{
$produks=Product::where('category_id', $id)->paginate(12);;
return view('guest.daftarproduk')
->with('produks',$produks);
}
我可以从子类别中选择所有产品(id 43,44,45)。
但我不知道如何从父类别(例如id 42)中选择所有产品,同时也从其中获取所有产品(id 43,44,45)
请帮帮我。
- 编辑---:
模特:
public function childs() {
return $this->hasMany('App\Category','parent_id','id') ;
}
控制器:
public function allkategori($id, $slug) {
$category= Category::with('childs')->FindorFail($id);
$child = $category->childs->pluck('id');
$produks=Product::whereHas('featuredPhoto', function($query) {
$query->orderBy('photo', 'asc');
})->where('category_id', $id)->get();
return view('guest.daftarproduk')
->with('produks',$produks);
}
答案 0 :(得分:0)
尝试此操作,使用eloquent获取属于父类别的所有子类别,然后遍历返回集合中的每个子类别以获取产品。
答案 1 :(得分:0)
最后,我找到了Has Many Through关系的答案。
型号:
public function allProducts()
{
return $this->hasManyThrough('App\Product', 'App\Category', 'parent_id', 'category_id', 'id');
}
控制器:
public function allkategori($id, $slug) {
$category= Category::with('allProducts')->FindorFail($id);
$child = $category->allProducts()->paginate(12);
return view('guest.daftarproduk')
->with('produks',$child);
}