Laravel 5.下拉列表不会更改数据库

时间:2017-08-17 13:34:52

标签: php laravel laravel-5

我有问题。我在表单中添加了下拉列表,但是他只显示了列表。当我点击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()
        );
    }

寻求帮助。

1 个答案:

答案 0 :(得分:1)

由于角色是一种关系,您需要将角色附加或关联到您的用户。取决于关系的类型。

您必须将role_id附加到您的用户模型,并将其添加到您的控制器中:

$user->roles()->attach($request->roles);
$user->save();

如评论中所述,您的下拉字段中的键是角色的ID。

ps:这些是laravel雄辩的基础知识,所以我建议先阅读文档。 https://laravel.com/docs/5.4/eloquent-relationships