Laravel LAVEL从父行中选择所有行

Laravel LAVEL从父行中选择所有行,laravel,eloquent,parent-child,Laravel,Eloquent,Parent Child,我有这样的表格结构: 关于更多说明,我还显示了类别表: 这是我的控制器: public function kategori($id, $slug) { $produks=Product::where('category_id', $id)->paginate(12);; return view('guest.daftarproduk') ->with('produks',$produks); } public function a

我有这样的表格结构:

关于更多说明,我还显示了类别表:

这是我的控制器:

    public function kategori($id, $slug)
{
    $produks=Product::where('category_id', $id)->paginate(12);;

    return view('guest.daftarproduk')
          ->with('produks',$produks);

}
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);
}
public function allkategori($id, $slug) {
    $category= Category::with('allProducts')->FindorFail($id);
    $child = $category->allProducts()->paginate(12);

    return view('guest.daftarproduk')
          ->with('produks',$child);
}
我可以从子类别(id 43、44、45)中选择所有产品

但我不知道如何从父类别(示例id 42)中选择所有产品,同时从其子类别(id 43、44、45)中获取所有产品

请帮帮我

--编辑---:

型号:

public function childs() {
        return $this->hasMany('App\Category','parent_id','id') ;
}
控制器:

    public function kategori($id, $slug)
{
    $produks=Product::where('category_id', $id)->paginate(12);;

    return view('guest.daftarproduk')
          ->with('produks',$produks);

}
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);
}
public function allkategori($id, $slug) {
    $category= Category::with('allProducts')->FindorFail($id);
    $child = $category->allProducts()->paginate(12);

    return view('guest.daftarproduk')
          ->with('produks',$child);
}

尝试此方法,使用eloquent获取属于父类别的所有子类别,然后循环返回集合中的每个子类别以获取产品

试试这个,使用eloquent获取属于父类别的所有子类别,然后循环返回集合中的每个子类别以获取产品

最后我发现答案与很多有着千丝万缕的联系

型号:

public function allProducts()
    {
        return $this->hasManyThrough('App\Product', 'App\Category', 'parent_id', 'category_id', 'id');
    }
控制器:

    public function kategori($id, $slug)
{
    $produks=Product::where('category_id', $id)->paginate(12);;

    return view('guest.daftarproduk')
          ->with('produks',$produks);

}
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);
}
public function allkategori($id, $slug) {
    $category= Category::with('allProducts')->FindorFail($id);
    $child = $category->allProducts()->paginate(12);

    return view('guest.daftarproduk')
          ->with('produks',$child);
}

最后我发现答案与很多有着千丝万缕的联系

型号:

public function allProducts()
    {
        return $this->hasManyThrough('App\Product', 'App\Category', 'parent_id', 'category_id', 'id');
    }
控制器:

    public function kategori($id, $slug)
{
    $produks=Product::where('category_id', $id)->paginate(12);;

    return view('guest.daftarproduk')
          ->with('produks',$produks);

}
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);
}
public function allkategori($id, $slug) {
    $category= Category::with('allProducts')->FindorFail($id);
    $child = $category->allProducts()->paginate(12);

    return view('guest.daftarproduk')
          ->with('produks',$child);
}

我可以从父母那里得到所有的孩子id。但我不知道如何循环每个孩子。你能给我举个例子吗?我可以从父母那里得到所有的孩子id。但我不知道如何循环每个孩子。你能给我举个例子吗。