Laravel:存储不带反斜杠的 json 数据

问题描述 投票:0回答:1

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

注意: 在尝试修复它或知道问题的根源在哪里时,我删除了模型中的铸造类型并且它有效,但(对我来说)它没有任何意义。我认为演员应该在模型上,所以我不认为这是解决方案。如果我错了,请告诉我。

提前致谢。

mysql arrays json laravel escaping
1个回答
0
投票

您可以使用 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'], '"'));
         }

这对我的情况有帮助

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.