gpt4 book ai didi

php - 模型中的 Laravel 动态填充

转载 作者:可可西里 更新时间:2023-11-01 00:02:06 25 4
gpt4 key购买 nike

陷入 laravel 5.2 的问题。

以下是eloquent create operation(post call)时的错误

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

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

  1. 模型中的可填充对象通过以下代码以动态方式填充:
    public function __construct() {     $this->fillable(\Schema::getColumnListing($this->getTable()))}

目前调试的方法如下:

  1. 在插入之前,在 Controller 中,$model::getillableField() 给出适当的可填充数组。

  2. 在 model.php 行(450)中,

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

    上面的代码返回值为“false”并且 $model::getFillableField() 在数组列表中有 column_name。

  3. 用表列对 $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 是有原因的。除非您的模型中的字段与公共(public)表单实际上是 1:1 的,否则允许所有字段在批量分配时可写是一个安全漏洞。

关于php - 模型中的 Laravel 动态填充,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40100709/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com