【问题标题】:Search value from JSON String in MySQL Using Laravel使用 Laravel 从 MySQL 中的 JSON 字符串中搜索值
【发布时间】:2021-06-02 17:39:44
【问题描述】:

我试图从 Laravel 的 MySql 表中的 JSON 字符串数据中获取搜索结果。

这是我的 JSON 字符串数据

{
    "Thursday": {
        "status": true,
        "start": "09:00",
        "end": "18:00"
    },
    "Sunday": {
        "status": false,
        "start": "09:00",
        "end": "18:00"
    },
    "Saturday": {
        "status": false,
        "start": "09:00",
        "end": "18:00"
    },
    "Monday": {
        "status": true,
        "start": "09:00",
        "end": "18:00"
    },
    "Friday": {
        "status": false,
        "start": "09:00",
        "end": "18:00"
    },
    "Tuesday": {
        "status": false,
        "start": "09:00",
        "end": "18:00"
    },
    "Wednesday": {
        "status": false,
        "start": "09:00",
        "end": "18:00"
    }
}

我想将此数据搜索到 JSON 字符串中,如果匹配则返回结果。

{
    "status": true,
    "start": "09:00",
    "end": "18:00"
}

我使用 Laravel 尝试以下查询

$query->whereJsonContains('training_availability', [['Thursday' => ['start' => '09:00']]]);

但我不想在 JSON 中使用 day,直接从 value 中搜索没有 days。

任何人都可以提供帮助。

【问题讨论】:

  • 似乎whereJsonContains 不支持模式路径...创建存储MySQL 过程,提取包含提供的"key":"value" 的单独对象,并使用它。
  • 你能举个例子吗? @Akina
  • 要么编辑您的问题并删除与 Laravel 相关的所有内容,要么为纯 SQL 解决方案搜索创建新问题。并指定精确 MySQL 版本。

标签: php mysql json laravel phpmyadmin


【解决方案1】:

如下使用:

$query->whereJsonContains('training_availability->Thursday->start', '09:00');

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-07-19
    • 2021-10-15
    • 1970-01-01
    • 1970-01-01
    • 2016-06-02
    • 2017-12-05
    • 2020-03-29
    • 2020-02-27
    相关资源
    最近更新 更多