Laravel 中模糊搜索 JSON 数组中的数据的指向问题

{

"items": [

    {

        "city": "杭州市",

        "total": "26.80",

        "mileage": "12.6",

        "car_type": "快车",

        "time_geton": "03-1114:30周五",

        "station_geton": "浙江吉桂投资有限公司",

        "station_getoff": "杭州火车站"

    },

    {

        "city": "杭州市",

        "total": "16.10",

        "mileage": "10.1",

        "car_type": "快车",

        "time_geton": "03-2121:44周-",

        "station_geton": "浙江吉桂投资有限公司",

        "station_getoff": "金色蓝庭"

    }

],

"common": {

    "date": "",

    "phone": "",

    "total": "100",

    "date_end": "",

    "date_start": ""

}

}
这是我要搜索的json数据,数据库字段名为ocrdata,我如果用where语句搜索common里的字段,用ocrdata->common->total就可以指向,但是如果我想搜索item里的city该怎么指向呢,因为item是个数组,无法一直用->指向下去,我试过ocrdata->items->[*]->total发现无法查到

《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 5

有没有人帮忙解答一下呢

3年前 评论
自由与温暖是遥不可及的梦想
DB::table('users')
                ->where('json->items[*]->city', '杭州市')
                ->get();

可以试试 但不确定能用 或者 用 whereJsonContains 都试一下

3年前 评论
xiaohuasheng (楼主) 3年前

file我这样试了还是搜不到,但是如果是这样的数据[{"favorite_color": "red", "wants_newsletter": true}, {"favorite_color": "red", "wants_newsletter": true}]用

file这个方法可以搜到,这两种数据差别就在一个是对象里的数组,一个直接是json数组,看到第二张图您有什么想法吗

3年前 评论
自由与温暖是遥不可及的梦想 3年前
自由与温暖是遥不可及的梦想 3年前
xiaohuasheng (作者) (楼主) 3年前
KayuHo

为啥不拆表啊

3年前 评论
xiaohuasheng (楼主) 3年前

试试使用以原生sql,我已经成功了
用JSON_CONTAINS(字段,JSON_OBJECT(‘json属性’, “内容”))

$q->whereRaw("JSON_CONTAINS(ocrdata->items, JSON_OBJECT('{$k}', '{$v}'))");
3年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!