尝试在php修补程序中保存记录后出现错误
Illuminate\Database\QueryException with message 'PHP error: Array to string conversion ...vendor\laravel\framework\src\Illuminate\Database\MySqlConnection.php on line 80
因为我的阵列在"选项"而抱怨财产,我做错了什么?
我的记录:
=> App\Question {#690
survey_id: 1,
label: "what services need",
input_type: "checkbox",
required: true,
options: [
"Tlevision",
"Internet ",
"Phone",
"Mobile",
],
order: 1,
updated_at: "2017-02-01 17:34:28",
created_at: "2017-02-01 17:34:28",
}
在Tinker中,基本上在我使用的选项字段中:
$ info-> options = [" title 1"," title 2" ..]
答案 0 :(得分:1)
选项1
我想最好的选择是使用casting:
在处理存储为序列化JSON的列时,数组强制转换类型特别有用。例如,如果您的数据库具有包含序列化JSON的JSON或TEXT字段类型,则在您的Eloquent模型上访问该属性时,将该属性添加到该属性将自动将该属性反序列化为PHP数组:
protected $casts = [
'options' => 'array',
];
定义了强制转换后,您可以访问options属性,它将自动从JSON反序列化为PHP数组。设置options属性的值时,给定的数组将自动序列化为JSON以进行存储。
选项2
创建accessor以自动序列化,并创建mutator以反序列化数据。
选项3
手动序列化options
,例如:
Model::create([
....
'options' => json_encode($options),
'order' => 1
]);
当您从DB获取此属性时,请手动反序列化:
$options = json_decode($result->options, true);