【发布时间】:2022-01-16 09:58:09
【问题描述】:
我一直在使用 laravel 5.3 版本,在一个表中我有一个 json 列,我在其中保存了一个类别表的平均评分。 因此,产品类别表有一个“详细信息”列作为保存 avgRating 的 json 数据类型。 我想在该 json 列中运行查询。我想以平均评分过滤该类别。因此,从前端评分进来一个以逗号分隔的参数,以便可以使用多个评分过滤类别。
$productCategory = ProductCategory::query();
$ratings = explode(',',$params['ratings']);
$productCategory = $productCategory->whereIn('detail->avgRating',$ratings)->get();
我想实现这样的目标。 我正在使用 Postgres
【问题讨论】:
-
你用的是什么关系型数据库?
-
@LajosArpad 我正在使用 postgres
-
@LajosArpad 我尝试了
$childrenCategories = $childrenCategories->where(DB::raw("detail->>'avgRating' in ('".$ratings."')"));,但没有得到想要的结果。我的意思是空的 -
直接在Postgres中试用一下。目前尚不清楚问题是在 Postgres 还是 Eloquent 级别。因此,让我们暂时消除 Eloquent,看看原始查询是否有效。
标签: php json laravel postgresql