Laravel eloquent 从 json 列的值过滤

Laravel eloquent filter from a value of json column

我接手了一个项目,他们将 date_start 值存储在 JSON 列中。

(例如,id、名称、some_column、元数据)
其中 meta 的值为 { propert1, property2, property3, "date_start": "2021-09-26", and so on...}

现在,在前端,我必须做一个搜索功能,我 select 一个日期。

现在在后端,由于 date_start 的值已存储在 json 列中,我假设我需要先获取所有记录,遍历它们然后然后解码 meta 字段。

总体来说是不是很糟糕?或者还有其他方法吗?

现代版本的数据库通常支持 JSON 列类型。这些 json 列可以使用 SQL.

查询

preferencesusers table:

{"dining": {"meal": "salad", "time": "20:00"}}

查询:

$users = DB::table('users')
                ->where('preferences->dining->meal', 'salad')
                ->get();

查看 JSON Where clauses 上的 Laravel 文档: