加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

php – Laravel Dynamic Fillable in Models

发布时间:2020-12-14 19:35:57 所属栏目:大数据 来源:网络整理
导读:在laravel 5.2中遇到了问题. 以下是eloquent创建操作(后调用)期间的错误, Model.php 453中的批量分配异常:column_name 以下是要考虑的先决条件: 模型中的Fillables通过以下代码以动态方式填充: public function __construct() { $this-fillable(Schema::
在laravel 5.2中遇到了问题.

以下是eloquent创建操作(后调用)期间的错误,

Model.php 453中的批量分配异常:column_name

以下是要考虑的先决条件:

>模型中的Fillables通过以下代码以动态方式填充:

public function __construct() {
     $this->fillable(Schema::getColumnListing($this->getTable()))
}

以下是到目前为止调试的方法:

>在插入之前,在控制器中,$model :: getillableField(),给出适当的可填充数组.
>在model.php行(450)中,

if ($this->isFillable($key)) {
      $this->setAttribute($key,$value);
}

上面的代码返回值为“false”,$model :: getFillableField()在数组列表中有column_name.
>使用表格列硬编码$fillable变量可以删除错误.
请帮忙,我哪里出错了,解决方案是什么?

提前致谢.

解决方法

你真正想做的是让所有字段都可填写.

在Laravel中执行此操作的正确方法是:

protected $guarded = [];

这适用于5.2,即使它的文档在5.3中找到.

(relevant source code for 5.2)

(Documentation from 5.3):

If you would like to make all attributes mass assignable,you may define the $guarded property as an empty array:

通过将$guarded设置为空数组,您将创建一个空的黑名单,允许所有字段都是可批量分配的.

此外,如果此模型将直接由用户输入构建,请不要这样做. Laravel要求定义$fillable或$guarded是有原因的.除非您的模型具有字面上1:1的公共表单字段,否则允许所有字段在批量分配上可写是一个安全漏洞.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读