Laravel: 无法添加记录多对多关系
Laravel: Unable To Add Record Many to many Relationship
我想使用 Laravel 6 的多对多关系添加记录。
我有一个用户可能有很多角色,如管理员、博主等
这是我在用户模型中的函数
public function roles()
{
return $this->belongsToMany(
'App\Role', 'user_roles', 'user_id', 'role_id', 'id'
);
}
这是表单提交后的请求数据
array:5 [▼
"_token" => "asdnkasdjisajdmasnduajid"
"email" => "admin@admin.com"
"roles" => array:2 [▼
0 => "2"
1 => "3"
]
]
我试过这个方法来保存我的记录
$users = [
'name' => $request->name,
'email' => $request->email,
'password' => bcrypt($request->password),
'status' => 'active',
];
$user = User::create($users);
if ($user) {
$role = $user->roles()->attach($request->roles);
if (!$role) {
Session::flash('error', "Unable to create Role at this moment");
return redirect()->back();
}
Session::flash('status', 'User Created Successfully');
return redirect()->back();
}
我得到
Unable to create Role at this moment
多对多关系doesn't return anything的attach()
方法。
因此,您的角色变量将始终为空,即使角色已成功附加到用户。
试试这个:
$users = [
'name' => $request->name,
'email' => $request->email,
'password' => bcrypt($request->password),
'status' => 'active',
];
$user = User::create($users);
if (!$user instanceof User) {
Session::flash('error', "Unable to create User at this moment");
return redirect()->back();
}
$user->roles()->attach($request->roles);
if (!$user->roles) {
Session::flash('error', "Unable to create Role at this moment");
return redirect()->back();
}
Session::flash('status', 'User Created Successfully');
return redirect()->back();
我想使用 Laravel 6 的多对多关系添加记录。 我有一个用户可能有很多角色,如管理员、博主等
这是我在用户模型中的函数
public function roles()
{
return $this->belongsToMany(
'App\Role', 'user_roles', 'user_id', 'role_id', 'id'
);
}
这是表单提交后的请求数据
array:5 [▼
"_token" => "asdnkasdjisajdmasnduajid"
"email" => "admin@admin.com"
"roles" => array:2 [▼
0 => "2"
1 => "3"
]
]
我试过这个方法来保存我的记录
$users = [
'name' => $request->name,
'email' => $request->email,
'password' => bcrypt($request->password),
'status' => 'active',
];
$user = User::create($users);
if ($user) {
$role = $user->roles()->attach($request->roles);
if (!$role) {
Session::flash('error', "Unable to create Role at this moment");
return redirect()->back();
}
Session::flash('status', 'User Created Successfully');
return redirect()->back();
}
我得到
Unable to create Role at this moment
多对多关系doesn't return anything的attach()
方法。
因此,您的角色变量将始终为空,即使角色已成功附加到用户。
试试这个:
$users = [
'name' => $request->name,
'email' => $request->email,
'password' => bcrypt($request->password),
'status' => 'active',
];
$user = User::create($users);
if (!$user instanceof User) {
Session::flash('error', "Unable to create User at this moment");
return redirect()->back();
}
$user->roles()->attach($request->roles);
if (!$user->roles) {
Session::flash('error', "Unable to create Role at this moment");
return redirect()->back();
}
Session::flash('status', 'User Created Successfully');
return redirect()->back();