Laravel:检索 JSON 数组中值的计数

Laravel: retrieve count of value in JSON array

Iv 目前接手了一个项目,开发人员在某些 table 的 json 数组列中存储了 has many 关系。

产品table

----------------------------
id | product | colour
----------------------------
 1   iPhone    ["8","4","1"]
 2   iPad      ["8","1"]
 3   Macbook   ["8"]

这是产品和可用产品颜色之间存储的关系的示例。

我需要能够获得与特定颜色相关的产品数量。 所以在这个例子中... colour: 8 会 return 3 products

我习惯于 Eloquent 利用 $product->colours() 的关系,但不幸的是在这种情况下我不能这样做,而且我无法更改当前的数据库结构。

我如何使用 eloquent where 或 whereIn 子句获得每种颜色的产品数量?

到目前为止我尝试了什么...

$count = $products->where('colour', '[$colour->id]')->count();
----
$count = $products->whereIn('colour', $colour->id)->count();

如有任何帮助,我们将不胜感激。提前致谢。

这很丑陋,但我想它可行:

\App\Product::where('colour','like','%"' .$colour->id '"%')->distinct()->count()