【问题标题】:Laravel 8 query json data from databaseLaravel 8 从数据库中查询 json 数据
【发布时间】:2021-12-02 02:30:53
【问题描述】:

我有一个列名测试,我在其中存储一个 JSON 数据,数据是这样的

{
    "id": 4030662213806,
    "buyer_accepts_marketing": true,
    "cancel_reason": null,
    "cancelled_at": null,
    "line_items": [
        {
            "id": 10357822685358,
            "vendor": "Samsung-1",
        },
        {
            "id": 10357822685358,
            "vendor": "Samsung-2",
        },
        {
            "id": 10357822685358,
            "vendor": "Samsung-3",
        }
    ],
    
}

我正在尝试获取供应商值为 Samsung-1 的数据

我的查询是这样的

$query = Test::where('id','4030662213806')
$query->orWhereJsonContains('test->line_items->vendor',$val);

也试过了

$query->orWhereJsonContains('test->line_items->vendor',$val);

但是没用

请帮忙

【问题讨论】:

  • 我认为你不需要testline_items->vendor
  • 如你所见 line_items 是一个数组,所以只有 line_items->vendor 工作?我也试过像 line_items[0]->vendor line_items[1]->vendor
  • 根据您的代码,test 是您的表名,但您说您还有一个名为 test 的列,我认为您这里有误。
  • 好吧,假设表名是 Order I added test only for example

标签: jquery arrays json laravel


【解决方案1】:

你可以试试

$query = Test::where('id','10357822685358')
$query->orWhereJsonContains('test->line_items->vendor',$val);

因为它是 id 和 value samsung 1

【讨论】:

  • 第一个 Test::where 只是一个例子,我想知道的实际查询是 orWhereJsonContains 中的条件
【解决方案2】:

查询line_items数组包含键vendor和值Samsung-1的位置

$query->orWhereJsonContains('test->line_items', ['vendor' => $val]);


此外,如果您尝试从test JSON 列查询id,第一行应该是

$query = Test::where('test->id', 4030662213806);

【讨论】:

  • 谢谢你的工作
猜你喜欢
  • 2021-05-09
  • 2014-06-04
  • 2021-08-20
  • 2017-05-20
  • 1970-01-01
  • 2021-06-08
  • 2021-07-02
  • 2018-09-22
相关资源
最近更新 更多