gpt4 book ai didi

php - 如何在 mariadb 中使用 -> 运算符查询 JSON 列

转载 作者:行者123 更新时间:2023-12-02 16:12:03 25 4
gpt4 key购买 nike

我正在尝试获取将 json 列数据与 Laravel 项目中的以下代码进行比较的计划:

$schedules = Schedule::where('schedule_with->company_person', $contact_company_person->id)->get();

这会生成如下所示的 SQL 查询:

select * from `schedules` where `schedule_with`->'$."company_person"' = 1;

虽然这适用于 MYSQL 5.7 及更高版本,但不适用于 MARIADB 10.5。但是 MARIADB 从 10.2 开始已经支持 JSON 列。对于 MARIADB,以下查询有效:

select * from schedules where JSON_Value(schedule_with, "$.company_person") = 3;

Laravel 是否需要进行一些配置更改才能使其正常工作?

我知道它可以通过原始查询来实现,我很好奇我错过了什么?

谢谢,

最佳答案

不,您无法更改配置来启用此功能。

differences between 10.5 and MySQL (8) 上引用 MariaDB 的文档:

MariaDB 10.5 does not support MySQL's JSON operators (-> and ->>).

“没有如果,没有但是”。


我想你可以用一个正则表达式替换来编辑 Laravel 生成的 SQL 就在 SQL 执行之前,但这既很难执行又看起来太老套了值得。相比之下,原始的 where 查询并没有那么难看:

$table->whereRaw('JSON_VALUE(schedule_with, ?) = ?', ['$.company_person', 3])

关于php - 如何在 mariadb 中使用 -> 运算符查询 JSON 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67738740/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com