【问题标题】:How to check the MySQL JSON column is not contains the value in laravel?如何检查 MySQL JSON 列是否包含 laravel 中的值?
【发布时间】:2017-11-02 10:23:50
【问题描述】:

我曾经在JSON数据类型列中查找搜索项是否存在。

我用过,

 TABLE::whereRaw('json_contains(list, \'["value"]\')')->get();

返回那些在“list”JSON 列中具有“value”的对象。

但是,我如何使用反向方法列出,那些在 laravel 的 json 列中没有这个值。

谢谢!

【问题讨论】:

  • WHERE json_contains() = 0?

标签: php mysql json laravel laravel-5


【解决方案1】:

你可以使用not:

TABLE::whereRaw('not json_contains(list, \'["value"]\')')->get();

在 Laravel 5.6.24 中你可以使用 whereJsonDoesntContain():

TABLE::whereJsonDoesntContain('list', 'value')->get();

【讨论】:

    【解决方案2】:

    DB::table('table')->whereNull('list->key')->get();

    【讨论】:

    • 虽然技术上准确,但这是一个非常糟糕的解决方案。
    • whereJsonDoesntContain 不适用于 1 级 JSON 密钥,但这有效。
    【解决方案3】:

    list IS NULL OR JSON_CONTAINS(list, 'value') = 0

    【讨论】:

    • 虽然这在技术上是一个有效的解决方案,但是否真的有必要根据原始问题 4 年后的评论重复这一点?最重要的是,答案可以使用一些上下文和解释,例如。该方法的文档中如何提到JSON_CONTAINS可以返回0或1,这直接回答了如何确定逆的问题。
    猜你喜欢
    • 2019-04-06
    • 1970-01-01
    • 2021-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-14
    相关资源
    最近更新 更多