陷入 Laravel 5.2 的问题。
以下是 eloquent 创建操作(调用后)期间的错误,
Model.php 中的批量分配异常 453:column_name
以下是需要考虑的先决条件:
- 模型中的可填充项通过以下代码以动态方式填充:
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 变量进行硬编码可消除错误。
请帮忙,我哪里出了问题,有什么解决办法吗?
提前致谢。
你真正想做的是ALL可填写的字段。
在 Laravel 中执行此操作的正确方法是:
protected $guarded = [];
这在 5.2 中有效,尽管它的文档可以在 5.3 中找到。
(5.2的相关源码)
(5.3 的文档):
如果您想让所有属性都可批量分配,您可以将 $guarded 属性定义为空数组:
通过设置$guarded
对于空数组,您将创建一个空黑名单,允许所有字段可批量分配。
另外,如果这个模型是ever将直接根据用户输入构建,请不要这样做。 Laravel 需要$fillable
or $guarded
被定义是有原因的。除非您的模型具有与公共表单实际上是 1:1 的字段,否则允许所有字段在批量分配时可写是一个安全漏洞。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)