Laravel将数据保持为数据库为null,而return all语句显示正确的数据

时间:2016-08-19 18:43:24

标签: php mysql laravel-5.2

请问我是Laravel 5.2的新手,我有一个表单,其中我的一个选择字段(role_id)填充了我的数据库角色表中的数据,这很好用。返回请求并完美返回数据时:

{
    _token: "lKF7Inzy1sGnQ1DwX6yBZCqDjTpgcvqfBqANuInz",
    name: "jingle2",
    email: "jingle2@lodx.com",
    **role_id: "1",**
    is_active: "1",
    password: "jocoblinks",
    file: { }
}

但是在将表单上的数据保存到数据库后,我依次为该字段获取空值。

持久化数据的方法:

public function store(UserRequest $request)
{
    //return $request->all();

     User::create($request->all());

     return redirect('/admin/users');
}

这就是我表单上的字段:

<div class="form-group">
    {!! Form::label('role_id', 'Role:') !!}
    {!! Form::select('role_id', [0=>'Choose options'] + $roles, null, ['class'=>'form-control']) !!}
</div>

表单上的$roles来自:

public function create()
{
    $roles = Role::lists('name', 'id')->all();

    return view('admin.users.create', compact('roles'));
}

请我尝试调试这个,但我真的不明白为什么会发生这种情况。

1 个答案:

答案 0 :(得分:0)

您应该将role_id列添加到fillable变量中。为此,您需要打开User模型并将此字段添加到受保护变量$fillable。您可以在文档中阅读相关内容:https://laravel.com/docs/5.2/eloquent#mass-assignment