我正在尝试使用模型创建选项,这是我的数组:
$result = array(
'match_id' => $input['id'],
'score' => $input['score'],
'result' => $input['result'],
'headline' => NULL,
'article' => $input['report'],
'tries' => $input['try'],
'try_amount' => $input['tryquant'],
'conversions' => $input['conv'],
'conv_amount' => $input['convquant'],
'penalties' => $input['pens'],
'pen_amount' => $input['penquant'],
'dropgoals' => $input['dgs'],
'dg_amount' => $input['dgquant']
);
Result::create($result);
其中一些内容是数组本身。例如:
$input['penquant'] = [
"4"
]
当我运行我的代码时,它将数据作为数据保存到数据库并引发以下错误:
helpers.php第703行中的ErrorException:preg_replace():参数不匹配,pattern是一个字符串,而替换是一个数组
有人可以告诉我我做错了什么以及如何解决它?
答案 0 :(得分:0)
不应该匆忙,忘了使用json_encode。
答案 1 :(得分:0)
最好的方法是在模型中使用mutators和accessors。
mutator的例子
// convert pen_amount from snake case to studly case
// The set...attribute (the ... is you field name which is in studly case) helps transform the data before you save it
// into the database
public function setPenAmountAttribute($value)
{
$this->attributes['pen_amount'] = serialize($value);
}
访问者的例子是
// convert pen_amount from snake case to studly case
// the get...Attribute (the ... is you field name which is in studly case) helps you convert the data back to it original state
public function getPenAmountAttribute($value)
{
return unserialize($value);
}
您可以对要保存为数组的所有字段使用访问器和更改器。这很优雅。无需在控制器中手动使用json_encode和解码。