获取preg_replace():参数不匹配,pattern是一个字符串,而替换是一个数组,同时在Laravel 5.2中执行更新查询

时间:2016-10-03 05:55:30

标签: laravel laravel-5.2

我有一个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是一个字符串,而替换是一个数组错误,在字段中它更新"数组"。

1 个答案:

答案 0 :(得分:0)

我认为在更新时,您试图传递表中没有相应列的参数(数据库/模型)。

要使其工作,请在Model中使用$fillable变量。例如:

$fillable = ['column_1', 'column_2', 'column_3', 'column_4',..., 'column_n'];

通过在模型中添加$fillable,更新查询将仅采用$fillable数组中定义的更新中的参数。

希望它对你有所帮助。有关Laravel中的质量分配的更多详细信息 - see this