1

我有表格来存储用户的菜单,如下所示:

表:模块

  • ID
  • 姓名
  • 状态(将具有值:活动/非活动)

表:菜单

  • ID
  • module_id
  • 关联

表:menu_user

  • 用户身份
  • menu_id
  • 加入

表:用户

  • ID
  • 姓名
  • 密码

关系将是这样的:

[users]- <menu_user>- [menus]-[modules]

模块有很多菜单;用户和菜单之间的关系是多对多的。

我只能得到用户的菜单:

$data = User::with('menus')->where('id', 2);

我想让模块处于活动状态的用户菜单如何使用 Eloquent 方式?

4

1 回答 1

0

另一种方法是来自用户端并使用与模块的嵌套关系,例如。

User::where('users.id', 1)
           ->with(array('menus.module' => function($query) {
                   $query->where('modules.status', '=', 'active');
                })
            )->get();

这取决于模型中的以下内容:

用户

public function menus()
{
    return $this->belongsToMany('Menu');
}

菜单

public function module(){
    return $this->belongsTo('Module');
}

模块

public function menu(){
    return $this->hasMany('Menu');
}

格伦

于 2013-11-08T05:09:38.280 回答