【问题标题】:Laravel mass assigning guarded fieldsLaravel 质量分配受保护的字段
【发布时间】:2020-05-07 17:44:40
【问题描述】:

所以基本上,为了方便起见,我使用批量分配。但是,我有一个名为“userid”的受保护字段。我已将单独的代码插入此字段,但由于某种原因我仍然收到错误:SQLSTATE[HY000]: General error: 1364 Field 'userid' doesn't have a default value

代码:

$apply = Apply::create(
        $request->all()
    );
    $apply->userid = Auth::user()->id;
    $apply->save();
    return redirect()->route('apply');

型号:

protected $guarded = ['userid'];

谢谢。

编辑: 还没有解决,还有其他解决办法吗?

【问题讨论】:

  • 为什么要保护字段?你没有实现一个setter吗?也许是一个范围?
  • 不是吗?我还没有将它添加为一个字段,所以这是设置它的唯一方法.. 对吗?
  • 使用create 将尝试在数据库中存储一条记录。您已在迁移中将userid 列定义为不为空,因此对create 的调用将失败,因为$request->all() 不包含userid
  • 谢谢,那我该如何解决呢?

标签: laravel mass-assignment


【解决方案1】:

将 userid 字段传递给 create 函数,

 $apply = Apply::create(array_merge(
         $request->all(),
         [
            "userid" => Auth::user()->id
         ])
         );

     $apply->save();

return redirect()->route('apply');

【讨论】:

  • 我完成了编辑并得到了SQLSTATE[HY000]: General error: 1364 Field 'userid' doesn't have a default value
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-05
相关资源
最近更新 更多