【发布时间】:2019-06-28 08:16:13
【问题描述】:
我的 MySQL 数据库 (5.7.25) 中有一个 JSON 列,它可以包含任何类型的 JSON 结构(因此我没有任何所有行共有的属性)
如何通过 laravel ELOQUENT 执行查询,以搜索与 JSON 列的属性之一中的字符串匹配的行?
我试过这个:
JSON_CONTAINS(`payload`, "key")
但是 mySQL 抛出以下异常:
Invalid JSON text in argument 2 to function json_contains: "Invalid value." at position 0
例如如果结构类似这样:
{first_name:"John", "last_name":"Smith", "company":"Demo Company"}
我想在任何属性中搜索包含单词“Demo”的所有行(如果字符串是 json 属性值的子字符串)。
我发现的唯一工作方式如下:
JSON_SEARCH(payload, 'one', '%Demo%') IS NOT NULL
但它似乎有点慢。所以我问是否有更快的方法
【问题讨论】:
标签: php mysql json laravel eloquent