Laravel - 多重关系 Eloquent

Laravel - Multiple relationships Eloquent

我刚开始学习 laravel,我正在为 Eloquent 人际关系而苦苦挣扎! 我有两个表,它们都是 multi-level:

帕吉纳斯-

示例:

  idPagina  name   parent 
  1          A      Null
  2          B       1

类别 -

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

嗯...所以我想得到这样的东西:

然后我有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();

       }}

和分类模型:

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();

 }
}

现在我只想加入两个表!

已编辑

好吧,我刚刚添加了 Stephen Lewis 建议的代码! 但是现在我无法得到我想要的multi-level,这里是blade代码

@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

好吧,我只是无法获得与 $pagina 相关的 $categoria -> children

将此添加到 Categoria class:

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

您还可以通过将此添加到 Pagina class:

来指定关系的另一方
public function categorias()
{
    return $this->hasMany('Categoria', 'idPagina');
}

有关如何使用 Eloquent 关系的更多信息可用 in the docs