首页 > 解决方案 > 如何根据与特殊数据匹配的json列检索数据

问题描述

delivery_charges表有一个名为 的 json 类型列locations。该列有以下数据

[{"district_id":"1"},{"district_id":"2"},{"district_id":"3"}]

但是$deliveryCharges当我运行这段代码时总是一个空数组:

$deliveryCharges = DB::table('delivery_charges')
    ->whereJsonContains('locations->district_id',post('district_id'))
    ->get();

dump(post('district_id')); // outputs 1
dump($deliveryCharges);    // outputs []

我可以看到值为post('district_id')1。当我注释行时,whereJsonContains()它返回数据。所以在我看来,我的 where 子句有问题。

标签: phpmysqljsonlaravel

解决方案


尝试这个


$deliveryCharges = DB::table('delivery_charges')
    ->where('locations','LIKE','%"district_id":"'.post('district_id') .'"%')
    ->get();

推荐阅读