【问题标题】:Laravel Relationship columns of the same tableLaravel 同一张表的关系列
【发布时间】:2020-02-21 10:47:36
【问题描述】:

我正在创建一个表来存储父类别及其子类别(子菜单)。

我正在尝试将“子菜单”列与同一张表的“id”列相关联。

我将使用这种关系来使用 foreach 构建一个子菜单菜单。

我的 MySQl 表:

ID | submenu | name
1  | null    | Products
2  | 1       | Submenu Level 1 (A)
3  | 1       | Submenu Level 1 (B)
4  | null    | Phones
5  | 4       | Samsung
6  | 4       | Apple

现在我选择所有父亲。

$categorias = Categorias::withCount('submenu')->where('ativo', 1)->whereNull('submenu')->get();

现在我不能继续了。

我想这样做。

<ul>
  @foreach($categorias as $n1){
    <li>
      <a href="">{{ $n1->name }}</a> // Here work
        @if( $n1->submenu_count > 0 )
          <ul>

            // I can't do this.
            @foreach($n1->submenus() as $n2)
              <li> <a href="">{{ $n2->nome }} </li>
            @endforeach


          </ul>
        @endif
    </li>
  @endforeach
</ul>

这是我尝试在模型中做的一些方法。

public function parent() {
    return $this->belongsTo('Categorias','submenu');
}

public function submenu(){
    return $this->hasMany('App\Categorias','submenu');
}

public function submenu(){
   return $this->hasMany('App\Categorias', 'id', 'submenu');
}

【问题讨论】:

    标签: laravel eloquent relationship


    【解决方案1】:

    可以这样做

    public function submenus(){
        return $this->hasMany(Categorias::class,'submenu', 'id');
    }
    
    $categorias = Categorias::with('submenus')->whereNull('submenu')->get();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-15
      • 1970-01-01
      • 2020-09-16
      • 2018-01-08
      • 2019-01-04
      • 2013-12-23
      相关资源
      最近更新 更多