gpt4 book ai didi

php - 选择,其中 JSON 数组包含

转载 作者:可可西里 更新时间:2023-11-01 06:32:17 25 4
gpt4 key购买 nike

所以在 Laravel 5 中有一个名为 JSON Where Clauses 的方便的东西,它使用 MySQL 的新功能来存储和获取存储在列中的 JSON:

User::where('meta->colors', 'red')->get()

将返回所有行,其中 meta 列中的 colors 将设置为 red

现在假设 colors 不是字符串,而是包含多种颜色的数组 (colors => ['red', 'blue', 'green']) .

什么是检索所有行的有效方法,其中 colors 包含例如值 red?

最佳答案

JSON_CONTAINS()完全符合您的要求:

JSON_CONTAINS(target, candidate[, path])

Indicates by returning 1 or 0 whether a given candidate JSON document is contained within a target JSON document, or—if a path argument was supplied—whether the candidate is found at a specific path within the target. — 12.16.3 Functions That Search JSON Values

目前Laravel 的query builder 没有提供相应的API。有一个 open internals proposal尽管如此。

与此同时,您可以执行原始查询:

\DB::table('users')->whereRaw(
'JSON_CONTAINS(meta->"$.colors", \'["red"]\')'
)->get();

这将返回所有在其 meta->colors JSON 字段中具有“red”的用户。请注意 -> operator需要 MySQL 5.7.9+。

您还可以直接在 Eloquent 模型上调用 whereRaw()

拉拉维尔 5.6

从 5.6 版本开始,Laravel 的查询构建器包含一个新的 whereJsonContains方法。

关于php - 选择,其中 JSON 数组包含,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46055223/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com