我正在尝试在 MySQL 中插入 json 数据(现在只是假数据),但我做错了什么,我看不出错误在哪里。 Laravel 版本是 7.4.
迁移文件:
Schema::create('example_table', function (Blueprint $table) {
$table->id();
$table->json('json_data');
...
});
该模型有合适的演员阵容:
protected $casts = [
'json_data' => 'array'
];
工厂档案:
$start_time = Carbon::createFromFormat('d/m/Y H:i:s', '01/01/2020 00:00:00');
$data = array();
for($i=0;$i<10;$i++){
$captured_time = $start_time->addMinutes(1);
$string_date = $captured_time->format('Y-m-d H:i:s');
$data[] = [mt_rand(0,100),mt_rand(0,100),$string_date];
$start_time = $captured_time;
}
return [
'json_data' => json_encode($data,JSON_UNESCAPED_SLASHES),
];
我期望数据存储在数据库上的方式是:
[[24,55,"2020-01-02 00:01:00"],[29,73,"2020-01-02 00:02:00"],...]
(无论是否用单引号或双引号存储)
但是它是用反斜杠存储的,就像这样:
"[[24,55,\"2020-01-02 00:01:00\"],[29,73,\"2020-01-02 00:02:00\"],...]"
请问有人知道如何防止这种情况吗? 我尝试使用选项“JSON_UNESCAPED_SLASHES”存储它,但看起来它不起作用(如果我的代码正确)。
注意: 在尝试修复它或知道问题的根源在哪里时,我删除了模型中的铸造类型并且它有效,但(对我来说)它没有任何意义。我认为演员应该在模型上,所以我不认为这是解决方案。如果我错了,请告诉我。
提前致谢。
您可以使用 array_push 函数将 json 文件放入数组中 像这样
$new_content=array();
foreach($content as $item){
array_push($new_content,(int)$item['product_id'],(int)$item['quantity'], trim($item['name_scientific'], '"'));
}
这对我的情况有帮助