使用 Laravel 在 MySql 中插入/更新/删除和获取 JSON

Posted

技术标签:

【中文标题】使用 Laravel 在 MySql 中插入/更新/删除和获取 JSON【英文标题】:Insert / Update / Delete and Fetch JSON in MySql using Laravel 【发布时间】:2021-01-26 09:45:38 【问题描述】:

如果我做错了,请纠正我。

我的数据库中插入了一个 JSON 编码数组

插入后是这样的

["Time Ultra,5.00,5","Downy Antibac,7.00,3","Zonrox Bleach,12.00,1"]

如果我不解码它与 fetch 相同,那么它将按原样显示。

现在我想更新,比如说我想更新或删除中间部分

“Downy Antibac,7.00,3”

如何更新或删除它。

到目前为止,这是我在插入部分的代码

$activities = Activities::find($request->input('activityid'));

        $itemList = Activities::where('id', $request->input('activityid'))->pluck('item_list')->first();

        $itemA = json_decode($itemList);
    

        if (!$itemA) 
            $itemB[] = $request->input('item_name').','.$request->input('item_price').','.$request->input('item_qty');
            $activities->service_list = json_encode($itemB);
        else
            $itemB = $request->input('item_name').','.$request->input('item_price').','.$request->input('item_qty');
            array_push($itemA,$itemB);
            $activities->service_list = json_encode($itemA);

        

        $activities->update();

如果我在编程中做错了什么或不应该做的事情,请提出建议。

我这样做是因为我的桌子看起来像这样

【问题讨论】:

你能控制这个 JSON 结构吗? 不要使用 JSON。创建一个包含product, price, quantity(或任何这三个值)列的表,然后加入该列。将来你会感谢自己。 @lagbox 是的。我控制着那些。 @Nick 我更新了原帖并添加了表格结构 精确指定您的 mysql 版本。 如何更新或删除它。 什么是标准?无论如何,您必须解析数组以分离元素,更新或删除元素(通过此操作的某些标准先前找到它),然后用新的元素状态(或没有它)重建数组。 【参考方案1】:

为了在 MySQL 中处理 JSON 类型的字段,Laravel 的 Eloquent ORM 支持 JSON 中的类型转换以及自定义转换的可扩展性。阅读此链接; https://laravel.com/docs/8.x/eloquent-mutators#attribute-casting

【讨论】:

以上是关于使用 Laravel 在 MySql 中插入/更新/删除和获取 JSON的主要内容,如果未能解决你的问题,请参考以下文章

Laravel / Lumen 只读模型?

如何使用 laravel 或仅使用本机 php 更新来自 mysql 数据库的 JSON 数据?

如何优化使用 PHP 或 Mysql 或 Laravel 将 12K 的 JSON 插入数据库

在 Laravel 中使用 Ajax 将数据插入 MySQL

Laravel - 使用大数据优化更新/插入查询的最佳方法是啥?

如何在 laravel 5 中插入和更新图像 Summernote