数组不为空,但在数据库中保存为NULL(Laravel)

时间:2018-05-27 18:43:35

标签: php laravel

我有数组数据

publish

我保存

 $data = [
  "_token" =>   "ERtVJwSXqfcyPJ452patZVmNnH75BZLDroKR1OaA"  
  "name" => "Ardy Febriansyah" 
  "username" => "ardyfeb2402"
  "email" => "ardyfeb02@gmail.c" 
  "password" => "ardyfeb2402"
  "password_confirm" => "ardyfeb2402"
 ]

但是User::create([ 'name' => $data['name'], 'username' => $data['username'], 'email' => $data['email'], 'password' => Hash::make($data['password']), ]); 存储为null到数据库

我已经检查$data['username']结果不是$data['username']

4 个答案:

答案 0 :(得分:1)

username字段添加到模型上的$fillable数组中。

您需要这样做,因为您进行了批量分配(将数组传递给create函数),默认情况下,Eloquent将保护未列出质量赋值的列。

答案 1 :(得分:0)

检查<input type="text" name="username">

还可以查看您的模型$fillable = ['username']添加username和其他字段。

答案 2 :(得分:0)

快速提醒一下,你可以定义protected $ guarded = [](空数组),而不必在$ guarded中添加指定的列。但大多数情况下,你想要保留一些属性。

答案 3 :(得分:0)

User模型上的$ fillable属性不包含'username',因此在使用静态方法时不会添加。在这种情况下,User :: create([]);

如果您想保持模型不变,那么您可以尝试

$user = new User;
$user->name = $data['name'];
$user->username = $data['username'];
$user->save();
只需更新受保护的$ fillable = ['name','email','username'];

或者对于本地开发,您可以在用户模型上将$ guarded属性设置为null。

protected $guarded = [];

$ guard和$ guarded 不一样。 不应该在生产中使用$ guarded = []。