我有问题。我在表单中添加了下拉列表,但是他只显示了列表。当我点击buttun“发送”我的数据库不会改变。 Form::text
更改了我的数据库,但Form::select
未进行任何更改。可能,我在控制器中有问题?
控制器
public function edit($id)
{
$user = User::with('roles')->findOrFail($id);
$userRole = Role::pluck('name', 'id');
return view('pages.edit', compact('user', 'userRole'));
}
public function update($id, Request $request)
{
$user = User::with('roles')->findOrFail($id);
$user->update($request->all());
return redirect('users');
}
查看
{!! Form::model($user, ['method' => 'PATCH', 'action'=>['UsersController@update', $user->id]]) !!}
<div class="form-group">
<div class="form-group col-md-offset-3 col-md-6">
{!! Form::label('roles','Roles: ') !!}
{!! Form::select('roles',$userRole, null,['class'=>'form-control']) !!}
</div>
<div class="form-group col-md-offset-3 col-md-6">
{!! Form::submit('Send', ['class'=>'btn btn-success form-control']) !!}
</div>
</div>
{!! Form::close() !!}
有角色
public function roles()
{
return $this->belongsToMany(Role::class);
}
public function assignRole($role)
{
return $this->roles()->save(
Role::whereName($role)->firstOrFail()
);
}
寻求帮助。
答案 0 :(得分:1)
由于角色是一种关系,您需要将角色附加或关联到您的用户。取决于关系的类型。
您必须将role_id附加到您的用户模型,并将其添加到您的控制器中:
$user->roles()->attach($request->roles);
$user->save();
如评论中所述,您的下拉字段中的键是角色的ID。
ps:这些是laravel雄辩的基础知识,所以我建议先阅读文档。 https://laravel.com/docs/5.4/eloquent-relationships