【问题标题】:Laravel - Multiple relationships EloquentLaravel - 多重关系 Eloquent
【发布时间】:2015-05-19 20:35:22
【问题描述】:

我刚开始学习 laravel,我正在为 Eloquent Relations 苦苦挣扎! 我有两张表,它们都是多级的:

分页-

  • IdPagina PK
  • 姓名
  • 父母

示例:

  idPagina  name   parent 
  1          A      Null
  2          B       1

类别 -

  • IdCategoria PK
  • 姓名
  • 父母
  • IdPagina - FK

    例子:

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

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

  • A - 父级

  • B - (A's)Child

  • C -(B 的)孩子

  • D - (C's) 孩子

然后我有 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 建议的代码! 但是现在我无法获得想要的多级,这是刀片代码

@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 -> children 相关的 $categoria

【问题讨论】:

    标签: php mysql laravel model eloquent


    【解决方案1】:

    将此添加到Categoria 类:

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

    您还可以通过将其添加到Pagina 类中来指定关系的另一端:

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

    有关如何使用 Eloquent 关系的更多信息,请访问in the docs。

    【讨论】:

    • 感谢代码!希望你现在能帮助我,我编辑了这个问题;)
    • 最里面的循环应该是@foreach $child-&gt;categorias
    • 好吧,暂时忘记嵌套循环。不同的关系是否独立运作? $pagina-&gt;categorias 是否返回类别集合,$categoria-&gt;pagina 返回单个页面,等等?
    • 是的,除了嵌套循环外,一切工作正常......问题是我没有链接到第三个循环和第二个循环......并且不知道如何做到这一点
    • 那么链接应该是你在第三个循环中使用@foreach $child-&gt;categorias(据我所知),但你说这不起作用。 Eloquent 是否返回任何错误?
    猜你喜欢
    • 2015-04-16
    • 2019-06-13
    • 2019-03-26
    • 2015-08-05
    • 2013-02-09
    • 2022-01-19
    • 2019-03-05
    • 1970-01-01
    • 2013-05-27
    相关资源
    最近更新 更多