Laravel user::create 缺失数据

Laravel user::create missing data

我已经使用迁移来更新我的用户 table 以包含提交的用户名,但在注册时该字段未填充到数据库中:

    $input = Input::only(['name', 'username', 'email', 'password']);
    $input['password'] = Hash::make($input['password']);
    User::create($input);
    return Redirect::to('login');

post 的转储提供了这个:

array (size=4)
  'name' => string 'Joe Bloggs' (length=13)
  'username' => string 'jbloggs' (length=12)
  'email' => string 'jbloggs@gmail.com' (length=24)
  'password' => string 'y$whgTTwa5g.du/WJfJGhGtO******SYTerzL4bhOuedW4C' (length=60)

但是用户名字段始终为空。没有错误或警告。我试过回滚和重新迁移,但没有任何变化。

我错过了什么吗?谢谢!

当您在 eloquent model 中添加用户时,您有一个数组 $fillable,它允许您 批量分配 更多可以找到http://laravel.com/docs/4.2/eloquent#mass-assignment

您传递给 create 的所有属性都需要在 $fillable 数组中定义,以便您可以将它们用于 mass assignment

你的情况:

protected $fillable = array('name', 'username', 'email', 'password');

或者您也可以定义相反的一组 guarded 属性:

protected $guarded = array('foo', 'bar');