Laravel中如何使用where查询JSON类型列?
Laravel JSON列查询方法
在Laravel中查询JSON类型列的特定属性,有几种简洁且正确的写法,替代你之前错误的语法:
基础查询方式
1. 使用->操作符直接指定JSON属性
这是最常用的方式,适用于MySQL、PostgreSQL等支持JSON的数据库:
$data = myModel::where('myJsonColumn->myJsonProperty', 1)->first();
如果JSON属性是嵌套结构,还可以多层级指定:
// 比如JSON结构是 {"user": {"id": 1}} $data = myModel::where('myJsonColumn->user->id', 1)->first();
2. 使用whereJsonContains方法
如果需要匹配JSON数组或者对象中的属性值,可以用这个方法:
// 匹配JSON对象中myJsonProperty等于1的记录 $data = myModel::whereJsonContains('myJsonColumn', ['myJsonProperty' => 1])->first(); // 如果myJsonColumn是数组,比如[{"id":1}, {"id":2}],可以匹配包含指定元素的记录 $data = myModel::whereJsonContains('myJsonColumn', ['id' => 1])->first();
注意事项
- 确保你的数据库版本支持JSON类型(MySQL 5.7+、PostgreSQL 9.4+等)
- 查询数值类型的JSON属性时,Laravel会自动处理类型匹配,无需额外转换字符串
内容的提问来源于stack exchange,提问作者exileValor
相关产品推荐
相关产品推荐

