【问题标题】:Laravel: Insert in pivot table [duplicate]Laravel:插入数据透视表[重复]
【发布时间】:2018-06-15 22:59:41
【问题描述】:

我有 3 张桌子

User(id,name,email)
Role(id,rolename)
role_user(user_id,role_id)

在角色表中我有以下数据;

id    rolename
1     admin
2     user 

在这种情况下,我将 users 表关联到具有多对多关系的角色表。

我有一个雄辩的模型

UserModel
 user_roles(){
belongsToMany('Role')
 }

现在我想在创建用户时将数据保存在 role_user 表中。我在下拉列表中有角色。

我正在使用以下查询

$user = new User();
$user->username = $data->username;
$user->email= $data->email
$user->save();

它完美地将用户保存在用户表中,但我还想将数据保存在 user_role 表中。

你们能帮我如何保存这个吗??

【问题讨论】:

    标签: laravel laravel-5 eloquent pivot-table


    【解决方案1】:

    创建用户后使用attach()方法:

    $user->roles()->attach($roleId);
    

    【讨论】:

    • 什么是 $roleId ?
    • @HaniMehdi $roleId 是角色 ID 或角色 ID 数组。如果您在$data 中有这个,只需使用$data->roles
    【解决方案2】:

    在用户模型中:

    public function roles()
    {
        return $this->belongsToMany(Role::class);
    }
    

    在角色模型中:

    public function users()
    {
        return $this->belongsToMany(User::class);
    }
    

    我假设你将角色作为数组传递,然后在你的控制器中你可以有这样的东西:

    public function store(Request $request)
    {
        //return $request->roles;
        $this->validate($request, [
            'name'  => 'required|string',
            'email' => 'required|email|unique:users',
            'password'  => 'required|confirmed'
        ]);
    
        $user = new User();
        $user->name = $request->name;
        $user->email = $request->email;
        $user->password = $request->password;
    
        $user->save();
    
        $user->roles()->attach($request->roles);
    
        return redirect()->route('backend.users');
    }
    

    【讨论】:

    • 谢谢,但它只将记录保存在 users 表中,而不是 leave_user 表中
    • 这一行应该可以解决问题:$user->roles()->attach($request->roles);。对了,什么是“leave_user”表?
    • 对不起它的 role_user 表而不是 leave_user
    • 再一次,使用这个“$user->roles()->attach($request->roles);”保存用户后。我已经这样做了,它有效。
    猜你喜欢
    • 2020-09-19
    • 1970-01-01
    • 1970-01-01
    • 2021-10-25
    • 1970-01-01
    • 2014-08-24
    • 1970-01-01
    • 2020-10-21
    • 1970-01-01
    相关资源
    最近更新 更多