如何使用Laravel在数据库中搜索未知的属性名称

手表

我正在尝试使用laravel的json contains方法搜索数据库。这是我的一个数据库行的JSON:

{
    "row": {
        "1": {
            "ID":"110555175667"
        },
        "2": {
            "ID":"11023235667"
        },
        "3": {
            "ID":"11001414141667"
        },
        "4": {
            "ID":"11023235667"
        },
        "5": {
            "ID":"1100012222225667"
        },
    }
}

我想搜索ID,但是正如您看到的那样,有一些数字作为属性。

例如,我要查找11023235667我已经尝试过了:

->whereJsonContains('json', [['row' => ['1' => ['ID' => '11023235667']]]])

但这没有用。我该怎么做?

编辑:

我也尝试过这个:

->whereRaw('JSON_CONTAINS(json, "$.row.*.ID", "11023235667")')

我知道的属性row必须是JSON数组才能完成以匹配ID,但已将其设置为JSON对象

比尔·卡温

JSON_CONTAINS()的用法接受JSON文档作为其第二个参数,而不是路径。

您可以使用该路径将ID提取到数组中:

SELECT JSON_EXTRACT(json, '$.row.*.ID') FROM ...
+--------------------------------------------------------------------------------------+
| ["110555175667", "11023235667", "11001414141667", "11023235667", "1100012222225667"] |
+--------------------------------------------------------------------------------------+

使用此方法,您可以搜索结果数组:

SELECT ... FROM mytable 
WHERE JSON_SEARCH(JSON_EXTRACT(json, '$.row.*.ID'), 'one', '11023235667') IS NOT NULL;

您需要whereRaw()在Laravel中使用此功能,因为Laravel没有针对此表达式的内置查询生成器功能。

提示:在WHERESQL查询子句中引用JSON列后,查询将变得更难编写和优化。这应该是一个红色标记,指示您的设计错误。您最好将数据存储在普通的行和列中,而不是JSON中。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在数据库中搜索名称开头的名称...或名称的结尾

在Laravel中连接两个属性后如何在数据库中搜索值

用于在数据库中搜索名称的 Bash 脚本

如何使用ajax将数据属性发送到laravel控制器(存储在数据库中)?

使用prepare语句在数据库中搜索数据

使用JSP在数据库中搜索数据

(PHP) 如何在数据库中存储名称属性而不是值

如何在数据库(laravel)的列中按字母搜索

如何使用Node JS、Postgres和dust js在数据库中搜索数据

我如何使用laravel在数据库中按年份和类型过滤timestamp类型的属性?

使用FlexibleSearchService Hybris在数据库表中搜索

在数据库中搜索文本(使用Hibernate Search)

在SQLite中使用乱码在数据库中搜索

如何使用Hibernate中的Example类在数据库中搜索相似实体

如何使用光标在数据库中搜索长类型

如何使用字符串参数在数据库中搜索

在数据库中搜索

在数据库中搜索字段

如何从数据库中根据 laravel-8 中的名称搜索书籍?

如何使用Laravel在数据库中插入数据数组及其相应的数据数组?

如果列包含 Laravel 中的 JSON 编码数据,我如何在数据库中搜索值

如何在Laravel上使用Cast将数据json保存在数据库中?

如何使用laravel在数据表中显示我的数据库记录

如何使用存储在数据库表中的属性配置Spring Bean

Laravel - 如何在数据库中插入 json

如何在数据库表中搜索字符串并在laravel中检索匹配的列名

Django在数据库中搜索类似的条目我的字符串名称

通过trim函数将输入名称变量转换为在数据库中搜索

无法使用 laravel 在 mongodb 数据库中搜索数据