首页 > 解决方案 > Laravel:存储没有反斜杠的json数据

问题描述

我正在尝试在 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”选项存储它,但它看起来不起作用(以防我的代码正确)。

注意:在尝试修复它或知道问题的根源时,我删除了模型中的强制转换类型并且它有效,但(对我而言)它没有任何意义。我认为演员应该在模型上,所以我认为这不是解决方案。请让我知道我是否错了。

提前致谢。

标签: mysqlarraysjsonlaravelescaping

解决方案


推荐阅读