2023-02-03 11:02:37
在 Laravel 中,可以使用 whereJsonContains 和 where 方法配合 JSON 路径表达式来查询 JSON 类型的数据。以下是具体用法和注意事项:
1. 使用 whereJsonContains 进行包含查询whereJsonContains 用于判断 JSON 字段是否包含指定的值,适用于查询 JSON 数组或对象中是否存在某个键值对。
meta->form_id 是 JSON 路径表达式,表示访问 meta 字段中的 form_id 键。
第二个参数 $formId 会根据数据库类型自动处理,确保正确比较 JSON 数据。
where 方法配合 JSON 路径表达式,适用于完全匹配 JSON 字段中某个键的值。
此方法生成 SQL 语句,直接匹配 meta->form_id 的值。
适用于需要完全匹配键值对的情况。
确保数据库支持 JSON 数据类型和函数(如 MySQL 5.7+、PostgreSQL、SQLite)。
语法需正确,例如 meta->form_id 表示访问 meta 的 form_id 键。
比较时确保类型一致。若 form_id 存储为整数,$formId 也应为整数,可用 intval() 转换。
若 $formId 来自用户输入,需验证和转义,防止 SQL 注入。
掌握这两种方法,可高效处理 Laravel 项目中的 JSON 数据查询需求。