mysql - Laravel 使用选择框附加角色
问题描述
我正在尝试使用选择框为用户附加角色,但它不起作用
我在角色和用户表之间有角色表和桥接表
我知道这是多对多的关系,我应该使用复选框而不是选择框
但当时出于某种原因,我只需要为用户分配 1 个角色
所以,我必须使用选择框
有任何想法吗?
控制器
public function store(Request $request)
{
$this->validate($request, array(
'name' => 'required|string|max:255',
'email' => 'required|string|email|max:255|unique:users',
'password' => 'required|string|min:8',
));
$password = Hash::make($request->password);
$user = new User;
$user->name = $request->input('name');
$user->email = $request->input('email');
$user->password = $password;
$user->save();
if ($request['user']) {
$user->roles()->attach(Role::where('name','user')->first());
}
if ($request['editor']) {
$user->roles()->attach(Role::where('name','editor')->first());
}
if ($request['admin']) {
$user->roles()->attach(Role::where('name','admin')->first());
}
return redirect('users')->with('success', 'user is successfully saved');
}
看法
<div class="form-group">
<label class="col-12">Roles</label>
<div class="col-12">
<div class="custom-control custom-radio mb-5">
<input class="custom-control-input" type="radio" name=admin" id="example-radio1" value="admin">
<label class="custom-control-label" for="example-radio1">Admin</label>
</div>
<div class="custom-control custom-radio mb-5">
<input class="custom-control-input" type="radio" name=pharmacy" id="example-radio2" value="editor">
<label class="custom-control-label" for="example-radio2">Editor</label>
</div>
<div class="custom-control custom-radio mb-5">
<input class="custom-control-input" type="radio" name=company" id="example-radio3" value="user">
<label class="custom-control-label" for="example-radio3">User</label>
</div>
</div>
</div>
解决方案
我认为这里的复选框可能比单独的无线电输入更好。
<input type="checkbox" name="roles[]" value="admin"><label>Admin</label>
<input type="checkbox" name="roles[]" value="editor"><label>Editor</label>
<input type="checkbox" name="roles[]" value="user"><label>User</label>
在 Laravel 方面:
// find the ids of the roles submitted by name
$role_ids = Role::whereIn('name', $request->input('roles', []))->pluck('id');
// attach any ids needed
$user->roles()->attach($role_ids);
推荐阅读
- java - 多线程环境中的文件处理问题
- php - 当我创建 users.blade.php 时,在 Laravel 中找不到类“App\users”
- php - 如何使用 new DateTime() 修复 if-else 语句的奇怪结果
- jenkins - 从失败的 Jenkins 流水线阶段重新启动
- css - 多个可滑动侧面板
- scrapy - 带有 text() 的 Scrapy Xpath 等于
- google-analytics - GTM如何将自定义维度设置为GA页面视图?
- c++ - 使用 std::chrono 的 C++ RFC3339 时间戳,以毫秒为单位
- python - 如何在pyparsing中解析浮点数,包括减号
- gnuplot - 如何在 gnuplot 中绘制文件?