【问题标题】:Using whereJsonContains and compare parameter to an array of strings使用 whereJsonContains 并将参数与字符串数组进行比较
【发布时间】:2020-08-06 23:09:26
【问题描述】:

我在 Laracasts 中问过这个问题,但我还没有收到这个问题的答案。我看过这个 stackoverflow 帖子:Laravel Eloquent - Working with an array of JSON objects

简单地说,我想知道有没有办法让我使用:

->whereJsonContains('column', ['starts_at' => '2018-11-24 08:00:00'])

但不是只有一个值,我想将它与一组值进行比较,即:

$dates = ['2018-11-24 08:00:00', '2020-19-01 08:00:00'];

->whereJsonContains('column', ['starts_at' => $dates])

我完全知道这不起作用,因为 whereJsonContains 只支持比较一个值而不是数组,所以我想我需要将它与 whereIn 方法结合起来。但是,我无法做到这一点。

我们将不胜感激任何帮助。非常感谢!

【问题讨论】:

    标签: json laravel eloquent


    【解决方案1】:

    使用多个orWhereJsonContains() 约束:

    $query->where(function ($query) use ($dates) {
       foreach ($dates as $date) {
           $query->orWhereJsonContains('column', ['starts_at' => $date]);
       }
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-04-22
      • 1970-01-01
      • 1970-01-01
      • 2016-10-17
      • 2012-01-04
      • 1970-01-01
      • 2016-12-22
      相关资源
      最近更新 更多