在laravel 5.2中遇到了问题。
以下是eloquent创建操作(后调用)期间的错误,
Model.php 453中的批量分配异常:column_name
以下是要考虑的先决条件:
以下是到目前为止调试的方法:
提前致谢。
你真正想做的是让所有字段都可填写。
在Laravel中执行此操作的正确方法是:
protected $guarded = [];
这适用于5.2,即使它的文档在5.3中找到。
(Qazxswpoi)
(Qazxswpoi):
如果您想使所有属性都可以分配,您可以将$ guarded属性定义为空数组:
通过将relevant source code for 5.2设置为空数组,您将创建一个空的黑名单,允许所有字段都可以进行质量分配。
此外,如果此模型将直接由用户输入构建,请不要这样做。 Laravel要求定义Documentation from 5.3或$guarded
是有原因的。除非您的模型具有字面上1:1的公共表单字段,否则允许所有字段在批量分配上可写是一个安全漏洞。
试试这个。将以下代码放入您的模型中,
$fillable
这使得每个列都可以从该表中填充。
创建使用数据库列的特征。
$guarded
现在在模型中使用此特征。
public function __construct()
{
$this->setFillable();
}
public function setFillable()
{
$fields = \Schema::getColumnListing('table_name_here');
$this->fillable[] = $fields;
}
现在你永远不必手动指定<?php
namespace App\Traits;
use Illuminate\Support\Facades\Schema;
trait ColumnFillable
{
public function getFillable()
{
return Schema::getColumnListing($this->getTable());
}
}
。