我有一个JSON格式,如下所示,
{"projectId":"1","projectName":"My Project","total_project_cost":2200000,"total":2400000,"totalPercentFee":7,"adderArray":[{"name":"Adder 1","value":"100000","firmApercentage":"","firmBpercentage":""},{"name":"Adder 2","value":"100000","firmApercentage":"","firmBpercentage":""}]
在此插入adderArray我有用户laravel $ cast。
所以我的模型看起来像这样
protected $table = 'projects_percent_fee_management';
protected $casts = [
'adder_data' => 'array',
'project_breakdown' => 'array',
];
protected $fillable = ['project_id','company_id','total_project_cost','adder_data','total','total_percent_fee','project_breakdown','total_budget'];
插入效果很好,它会在adder_data字段中正确插入adderArray数据。
但是更新它时会给出preg_replace():参数不匹配,pattern是一个字符串,而替换是一个数组错误,在字段中它更新"数组"。
答案 0 :(得分:0)
我认为在更新时,您试图传递表中没有相应列的参数(数据库/模型)。
要使其工作,请在Model中使用$fillable
变量。例如:
$fillable = ['column_1', 'column_2', 'column_3', 'column_4',..., 'column_n'];
通过在模型中添加$fillable
,更新查询将仅采用$fillable
数组中定义的更新中的参数。
希望它对你有所帮助。有关Laravel中的质量分配的更多详细信息 - see this