【问题标题】:Laravel User - Role many to many relationshipLaravel 用户 - 角色多对多关系
【发布时间】:2017-05-17 23:31:10
【问题描述】:

我创建了一个角色表,它与用户表具有多对多关系。模型和一切就绪,加上我可以正确播种所有表以创建默认用户 + 3 个角色。

我想修改脚手架注册控制器,以便我可以将角色与其他属性(姓名、邮件等)一起附加。默认创建方法如下所示:

protected function create(array $data)

    return User::create([
        'name' => $data['name'],
        'email' => $data['email'],
        'password' => bcrypt($data['password']),
    ]);
}

如何称呼榜样?以及如何将它传递给 create 函数并最终传递给视图? 我最初的想法是:

use App\Role;

在文件的开头和

$roles = Role::all();

也许在创建功能上?这可能是错误的,但我想不出别的。

另外,我如何在视图上调用它?如上所述,角色表有 3 个预定义角色。

【问题讨论】:

    标签: laravel authentication


    【解决方案1】:

    您需要先创建用户,然后您需要附加角色并返回用户实例。这应该适合你:

    protected function create(array $data)
    {
        $user = User::create([
            'name' => $data['name'],
            'email' => $data['email'],
            'password' => bcrypt($data['password']),
        ]);
    
        $roles = [2, 4];
    
        $user->roles()->attach($roles);
    
        return $user;
    }
    

    【讨论】:

    • 谢谢您的回答,但是:假设角色分别是 id 2 和 4(如果我没看错的话),我想让注册视图给我角色的下拉列表数据库,然后附加管理员将提供的数据库。不介意外观,但我如何修改注册视图以显示数据库中已经存在的角色,然后附加它们?
    • 编写自己的寄存器视图和第二个控制器是否明智?只是为了方便而不是干预 laravel 的 registersUsers 特性
    • 2 和 4 只是向您展示想法和格式的示例。当然,您需要根据需要更改此设置。如果建议您编辑和使用内置的身份验证系统,包括控制器、视图等。
    猜你喜欢
    • 2017-04-16
    • 2017-09-21
    • 2022-01-08
    • 2017-10-06
    • 2022-01-23
    • 2019-08-17
    • 2018-06-15
    • 2021-07-31
    • 1970-01-01
    相关资源
    最近更新 更多