2016-11-10 21 views
2

我有三个表Laravel:使用从三个表选择雄辩

  1. service_cats(ID - cat_name)
  2. service_sub_cats(ID - CAT_ID - sub_cat_name)
  3. sub_cat_contents(ID - sub_cat_id - 标题 - 内容)

和我做了这个关系

服务猫

public function serviceSubCat() 
    { 
     return $this->hasMany('ServiceSubCat'); 
    } 

serviceSubCat

public function ServicesCat() 
    { 
     return $this->belongsTo('ServiceCat', 'cat_id'); 
    } 

    public function ssContent() 
    { 
     return $this->hasMany('SubCatContent'); 
    } 

subCatContent

public function ssCat() 
    { 
     return $this->belongsTo('ServiceSubCat', 'sub_cat_id'); 
    } 

我需要从葡萄三个表中的数据来使用它们。

这里是我的控制器

public function show($id) 
    { 
     $serCat = ServiceCat::where('id', $id)->first(); 
     $getId = $serCat->sub_status; 
     if ($getId == 1) { 
      $subCats = ServiceSubCat::with('ssContent')->where('cat_id', $id)->get(); 
      //dd($subCats); 
      return View::make('portal.services.servicesDetailsList', compact('serCat', 'subCats')); 
     } else { 
      return View::make('portal.services.servicesDetails'); 
     } 
    } 

现在我得到错误没有找到

我需要得到cat_name,sub_cat_name,标题,内容

回答

0

确保你的关系被定义为:

serviceCat

public function serviceSubCat() 
{ 
    return $this->hasMany('ServiceSubCat', 'cat_id'); 
} 

serviceSubCat

public function ServicesCat() 
{ 
    return $this->belongsTo('ServiceCat', 'cat_id'); 
} 

public function ssContent() 
{ 
    return $this->hasMany('SubCatContent', 'sub_cat_id'); 
} 

subCatContent

public function ssCat() 
{ 
    return $this->belongsTo('ServiceSubCat', 'sub_cat_id'); 
} 

控制器

public function show($id) 
{ 
    $serCat = ServiceCat::where('id', $id)->with('serviceSubCat.ssContent')->first(); 
    $getId = $serCat->sub_status; 
    if ($getId == 1) { 
     return View::make('portal.services.servicesDetailsList', compact('serCat')); 
    } else { 
     return View::make('portal.services.servicesDetails'); 
    } 
} 

然后在您的视图,你可以做:

{{ $serCat->cat_name }} 
@foreach ($serCat->serviceSubCat as $ser) 
    {{ $ser->sub_cat_name }} 
    @foreach ($ser->ssContent as $subCatContent) 
     {{ $subCatContent->title }} 
     {{ $subCatContent->content }} 
    @endforeach 
@endforeach 
+0

感谢重播,但得到这个错误'未定义的属性:照亮\数据库\雄辩\收藏:: $ title' –

+0

尝试更新的答案。在视图的代码中缺少一个'@ foreach'。 –

+0

是的,这工作只是发现没有考虑使'foreach'下'foreach'非常感谢@Amit –