Laravel mysql 怎样编写JSON

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Laravel mysql 怎样编写JSON相关的知识,希望对你有一定的参考价值。

第一种方法,将这个整个json字符串存入数据库,取出的时候$arr=json_decode(\'字符串\');遍历数组,第二种就是先json_decode再存入数据库 参考技术A DB::table('products')
->whereRaw("JSON_CONTAINS(tags, '[3, 4]')")
->limit(3)
->get()
->toArray();

如何检查 MySQL JSON 列是不是包含 laravel 中的值?

【中文标题】如何检查 MySQL JSON 列是不是包含 laravel 中的值?【英文标题】: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? 【参考方案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,这直接回答了如何确定逆的问题。

以上是关于Laravel mysql 怎样编写JSON的主要内容,如果未能解决你的问题,请参考以下文章

laravel 怎样打数据库每一步操作日志

用 Laravel/Eloquent 为 Yajra DataTables 编写连接查询的慢 MySQL

我将如何在 Laravel Eloquent 中编写这个 MySQL 查询?

Laravel 的调试消息 - 部分是法语。我怎样才能把它变成英文?

laravel 视图文件在哪编写

如何在 laravel 中编写此查询?有啥建议么?