Laravel查询含对象数组的JSON列:获取指定条件行
查询满足嵌套JSON数组条件的行
针对你的需求(获取id=35且json_col数组中存在对象满足key_two.value=1且key_two.type='static'的行),以下是两种实现方式:
Laravel 查询构造器(Query Builder)
利用Laravel内置的whereJsonContains方法,可直接匹配JSON数组中的嵌套结构:
$targetRow = DB::table('your_table') // 替换为你的实际表名 ->where('id', 35) ->whereJsonContains('json_col', [ 'key_two' => [ 'value' => 1, 'type' => 'static' ] ]) ->first();
该方法会自动适配不同数据库的JSON语法,无需手动拼接复杂的JSON函数。
原生SQL查询
以MySQL为例
直接使用MySQL的JSON_CONTAINS函数实现条件筛选:
SELECT * FROM your_table -- 替换为你的实际表名 WHERE id = 35 AND JSON_CONTAINS(json_col, '{"key_two": {"value": 1, "type": "static"}}');
以PostgreSQL为例
使用jsonb_path_exists函数实现更灵活的JSON路径查询:
SELECT * FROM your_table -- 替换为你的实际表名 WHERE id = 35 AND jsonb_path_exists(json_col, '$[*] ? (@.key_two.value == 1 && @.key_two.type == "static")');
内容的提问来源于stack exchange,提问作者medilies
相关产品推荐
相关产品推荐

