You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel 8 如何正确查询JSON字段中line_items包含指定vendor值的记录

正确实现方案

你之前的写法存在两个核心问题:

  • 逻辑符使用错误:orWhereJsonContains会将查询条件变为「id匹配 或 JSON字段满足条件」,不符合你要同时匹配两个条件的需求,应改用whereJsonContains
  • JSON路径规则错误:whereJsonContains查询JSON数组内嵌套对象的指定字段时,路径只需指定到数组层级,第二个参数传入需要匹配的键值对结构即可。

Laravel框架下的正确查询代码如下:

$val = 'Samsung-1';
$records = Test::where('id', '4030662213806')
    ->whereJsonContains('test->line_items', ['vendor' => $val])
    ->get();

注意事项

  • 该查询依赖数据库的JSON查询支持,MySQL需要5.7及以上版本,PostgreSQL、SQL Server等主流数据库的近年版本也均支持该特性
  • 如果你不需要限定id条件,仅筛选所有line_items中存在对应vendor的记录,直接删除第一个where条件即可

内容的提问来源于stack exchange,提问作者pawan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 06:09:03