【问题标题】:Laravel eloquant collection - unable to convert it to valid jsonLaravel 雄辩的集合 - 无法将其转换为有效的 json
【发布时间】:2021-04-22 07:54:17
【问题描述】:

我有一个 laravel eloquant 对象,我想将其转换为 JSON 以存储在 MySQL 数据库中,我正在使用以下代码进行转换

Order::create(['product' => json_encode($cart->product, true)]);

下面我也试过了

Order::create(['product' => $cart->product->toJson()]);

此代码存储完美,但 json 格式似乎无效,如下所示

"{\"id\": 5,\"name\": \"CAPSTER CAP\",\"description\": \"This is the\"}"

但应该如下所示

{"id": 5,"name": "CAPSTER CAP","description": "This is the"}

【问题讨论】:

    标签: php json laravel eloquent


    【解决方案1】:

    您应该需要在 MySQL 数据库中创建一个 text 或 longText 数据类型列。 然后将 JSON 保存为这样的字符串。

    Order::create(['product' => json_encode($cart->product->toArray()) ]);
    

    【讨论】:

    • 嗨,我试过你的解决方案,但同样的问题,我在数据库中有 longText 数据类型
    • 从表中获取数据并使用 json_decode(),如果它返回一个有效的 JSON 则忽略反斜杠。
    【解决方案2】:

    您需要更改迁移类的结构。对模型类使用 json 数据类型,例如

     Schema::create('orders', function (Blueprint $table) {
         $table->increments('id');
         $table->json('product')->nullable();
         $table->timestamps();
     });
    

    【讨论】:

    • 嗨布赖恩,是的,我也尝试过这种方法,但仍然是同样的问题
    • 即使在你的控制器类中定义了这个:`$data = json_encode($request->product);订单::create($data);`
    • 不,我检查了我是否从开头和结尾删除“然后它可以工作
    猜你喜欢
    • 2019-05-31
    • 2017-10-24
    • 2015-03-04
    • 1970-01-01
    • 2021-09-07
    • 2020-09-08
    • 2015-08-15
    • 1970-01-01
    • 2016-09-14
    相关资源
    最近更新 更多