【问题标题】:Array not null, but on database saved as NULL (Laravel)数组不为空,但在数据库上保存为 NULL (Laravel)
【发布时间】:2018-05-27 18:43:34
【问题描述】:

我有数组数据

 $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']),
    ]);

$data['username'] 存储为空到数据库

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

【问题讨论】:

  • 大小写一样吗?您的列用户名是不是用户名,例如用户名?
  • 用户名是否在您的 User 模型的 $fillable 数组中?
  • 缺乏研究...
  • 谢谢,通过将用户名添加到 $fillable 解决

标签: php laravel


【解决方案1】:

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

您需要这个,因为您执行批量分配(将数组传递给 create 函数),默认情况下,Eloquent 将保护未列出的批量分配列。

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

        您在 User 模型上的 $fillable 属性不包含“用户名”,因此当您使用静态方法时不会添加我。在这种情况下 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 = []。

        【讨论】:

          猜你喜欢
          • 2017-06-29
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-02-17
          相关资源
          最近更新 更多