Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Laravel 4 如何获得用户的菜单,其中有活跃的模块在Laravel 4与雄辩?_Laravel 4_Eloquent - Fatal编程技术网

Laravel 4 如何获得用户的菜单,其中有活跃的模块在Laravel 4与雄辩?

Laravel 4 如何获得用户的菜单,其中有活跃的模块在Laravel 4与雄辩?,laravel-4,eloquent,Laravel 4,Eloquent,我有表格存储用户菜单,如下所示: 表:模块 身份证件 名称 状态将具有以下值:活动/非活动 表:菜单 身份证件 模块id 链接 表:用户菜单 用户id 菜单id 参加 表:用户 身份证件 名称 暗语 这种关系将类似于: [用户]-[菜单]-[模块] 模块有很多菜单;用户和菜单之间的关系是多对多的 我只能获取用户菜单: $data = User::with('menus')->where('id', 2); 我想让用户菜单中的模块处于活动状态,有什么好办法吗?另一种方法是来自用户端,并使用

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

表:模块

身份证件 名称 状态将具有以下值:活动/非活动 表:菜单

身份证件 模块id 链接 表:用户菜单

用户id 菜单id 参加 表:用户

身份证件 名称 暗语 这种关系将类似于:

[用户]-[菜单]-[模块]

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

我只能获取用户菜单:

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

我想让用户菜单中的模块处于活动状态,有什么好办法吗?

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

User::where('users.id', 1)
           ->with(array('menus.module' => function($query) {
                   $query->where('modules.status', '=', 'active');
                })
            )->get();
这取决于模型中的以下各项:

使用者

菜单

模块

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

Glen

嗯,我发现这一个似乎适合我的需要:$data=Module::with['menus'=>function$q{$q->join'menu\u user','menus.id','=','menu\u user.menu id'->where'join','include'->where'user\u id',2;}]->where'status','active;也许其他人可以改进或有更好的答案是受欢迎的
public function module(){
    return $this->belongsTo('Module');
}
public function menu(){
    return $this->hasMany('Menu');
}