首页 > 解决方案 > laravel whereJson 包含带操作符

问题描述

我有一个名为“体验”的 json 列。

它是一个具有这样结构的对象数组

[
  {
    ...
    "years": 1
  },
  {
    ...
    "years": 2
  }
]

我想获得经验年大于或等于 2 的用户

目前我正在这样做

User::whereJsonContains('experience', ['years' => 2]);

但这只会返回经验年数等于 2 的用户

我试过这样做,但没有奏效

User::whereJsonContains('experience->years', '>=' , 2);
User::where('experience->years', '>=' , 2);

无论如何在laravel或mysql中实现这一点?

标签: mysqljsonlaravel

解决方案


这不是一个合适的解决方案,但它可能会对您有所帮助。

$users = \DB::table('users')->where(\DB::raw('JSON_EXTRACT(experience, "$[*].years")'), '>=', 2)->get();

推荐阅读