如何使用Eloquent获取Laravel 4中具有活动模块的用户菜单?

时间:2013-11-08 02:02:51

标签: laravel-4 eloquent

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

表:模块

  • ID
  • 名称
  • status(将具有值:active / inactive)

表格:菜单

  • ID
  • 模块id
  • 链接

表:menu_user

  • USER_ID
  • menu_id
  • 加入

表:用户

  • ID
  • 名称
  • 密码

关系将如下:

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

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

我只能获得用户的菜单:

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

如果我想要拥有模块处于活动状态的用户菜单的Eloquent方式?

1 个答案:

答案 0 :(得分: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');
}

格伦