我正在从API响应中检索数据,然后将其保存到数据库中。在插入数据库时,我想忽略API响应中的一些字段,因为表中不存在这些字段。我了解到它是通过将必要的字段分配给模型上的$fillable来工作的,这会自动忽略这些字段,但是它只适用于只插入一行的Model::create($singleRowWithAttributesNotInTable),但我希望对多行执行大容量插入。Model::insert($multipleRowsWithAttributesNotInTable)执行大容量插入,但是它忽略$fillable变量并返回Column not found错误。
有没有办法这样做,或者我必须循环通过API数据并在循环中添加Model::create()?谢谢!
发布于 2018-01-11 09:00:11
根据这些线索:
查询生成器的方法insert存在于Illuminate\Database\Query\Builder类中,而不是Illuminate/Database/Eloquent/Model.php.Which中,这意味着您没有使用雄辩的模型。
这就是为什么$fillable属性不是triggered.If的原因--数组中有任何附加数据,如(_token、_submit等)。)会导致你的错误。
在调用insert方法之前,您可以使用getFillable方法过滤数组,以确保插入的数组没有任何附加值。
注意:如果表中有created_at、updated_at字段,并且使用insert方法,则必须将它们添加到数组中。
https://stackoverflow.com/questions/48197681
复制相似问题