2015-03-17 4 views
0

Я только начал изучать laravel, и я борется с Красноречивыми отношениями! У меня есть две таблицы, они оба многоуровневая:Laravel - Многократные отношения Eloquent

Paginas-

  • IdPagina PK
  • имя
  • Родитель

пример:

idPagina name parent 
    1   A  Null 
    2   B  1 

Категорий -

  • IdCategoria ПК
  • имя
  • Родитель
  • IdPagina - FK

    Пример:

idCategoria  name parent idPagina 
1     C  Null  2 
2     D  1   2 

Ну ... так что я хочу, чтобы получить что-то вроде этого:

  • A - Родитель

  • B - ребенок (в)

  • C - Ребенок (Б)

  • D - Ребенок (C в)

Тогда я Paginas модель:

class Paginas extends Eloquent{  

    public function children() {   
     return $this->hasMany('app\paginas', 'parent', 'idPagina'); 
     } 

      public static function tree() { 
     return static::with(implode('.', array_fill(1, 10, 'children')))->where('parent', '=', null)->get(); 

     }} 

И Categorias модель:

class Categoria extends Eloquent{ 




public function children() { 
return $this->hasMany('app\categoria', 'parent', 'idCategoria'); 

    } 

    public static function tree() { 

return static::with(implode('.', array_fill(1, 10, 'children')))->where('parent', '=', null)->get(); 

} 
} 

и теперь я просто хочу, чтобы присоединиться обе таблицы!

EDITED

Ну, я просто добавил коды, предложенные Стивен Льюис! Но теперь я не могу получить многоуровневую, как я хочу, вот код

@foreach($paginas as $pagina) 
    <h1>{{$pagina -> nomePag}}</h1> 
    @foreach ($pagina -> children as $child) 
    <h3>{{$child -> nomePag}}</h3> 
    @foreach($pagina -> categorias as $categoria) 
     {{$categoria -> nomeCat}} 
    @endforeach 
    @endforeach 
@endforeach 

лезвие хорошо, я просто не могу получить $ CATEGORIA, связанные с $ Pagina -> дети

ответ

0

Добавьте к этому Categoria класс:

public function pagina() 
{ 
    return $this->belongsTo('Pagina', 'idPagina'); 
} 

Вы также можете указать другую сторону отношений, путем добавления этого к Pagina класса:

public function categorias() 
{ 
    return $this->hasMany('Categoria', 'idPagina'); 
} 

Дополнительную информацию о том, как работать с отношениями «Красноречивый», можно получить у in the docs.

+0

Спасибо за код! надеюсь, что вы можете мне помочь сейчас, я отредактировал вопрос;) –

+0

Самый внутренний цикл должен быть '@foreach $ child-> категорией' –

+0

спасибо, но он не работает –

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