我正在尝试使用Eloquent在JSON字段中搜索,但现在可以搜索到0个结果。
这是针对运行PostgresSQL,Laravel 5.8和Apache 2的Ubuntu服务器的。
[{
"value": "1",
"label": "numero"
},{
"value": "2016",
"label": "anio"
},{
"value": "Acer",
"label": "especie"
},{
"value": "2",
"label": "cant_plantar"
}]
PlanificacionInfo::select('datos_complementarios')->WhereJsonContains('datos_complementarios', ["value" => "Escamonda 2019"]);
查询返回空
答案 0 :(得分:0)
您是否在->whereJsonContains
中用小写的“ w”进行了尝试?像这样:
PlanificacionInfo::select('datos_complementarios')
->whereJsonContains('datos_complementarios', ["value" => "Escamonda 2019"]);
在documentation中,您可能需要执行以下操作:
$users = PlanificacionInfo::select('datos_complementarios')
->whereJsonContains('datos_complementarios->value', 'YOUR SEARCH TERM HERE')
->get();
此外,问题中给出的示例中似乎没有与您的查询匹配的json-数据中是否显示“ Escamonda 2019”?
答案 1 :(得分:0)
PostgreSQL要求对象值必须在数组内:
PlanificacionInfo::select('datos_complementarios')
->whereJsonContains('datos_complementarios', [["value" => "Escamonda 2019"]]);
使用原始表达式进行不区分大小写的搜索:
PlanificacionInfo::select('datos_complementarios')
->whereJsonContains(
DB::raw('lower("datos_complementarios"::text)'),
[["value" => strtolower("Escamonda 2019")]]
);