2016-11-10 3 views
2

У меня есть три таблицыLaravel: Выберите один из трех таблиц с использованием красноречивого

  1. service_cats (идентификатор - cat_name)
  2. service_sub_cats (идентификатор - cat_id - sub_cat_name)
  3. sub_cat_contents (идентификатор - sub_cat_id - заголовок - содержание)

, и я сделал это отношения

обслуживание Cat

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

Спасибо за повтор, но получил эту ошибку 'Не определено свойство: Осветить \ Database \ Eloquent \ Коллекция :: $ title' –

+0

Попробуйте обновленный ответ. В коде просмотра отсутствовал код '@ foreach'. –

+0

да это сработало просто найти не думал о том, чтобы сделать 'foreach' под' foreach' спасибо большое @Amit –

Смежные вопросы