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/Eloquent 为 Yajra DataTables 编写连接查询的慢 MySQL
我将如何在 Laravel Eloquent 中编写这个 MySQL 查询?