gpt4 book ai didi

php - 查询对象数组(带 JSONB 的 Postgres,Laravel 5)

转载 作者:可可西里 更新时间:2023-11-01 00:30:51 25 4
gpt4 key购买 nike

我在 JSONB 字段中得到了这些数据:

[
'first_name' => 'Philipp',
'last_name' => 'Kühn',
'size' => 170,
'hobbies' => [
'daily' => 'beer',
],
'skills' => [
'drink beer',
'drink more beer',
],
]

我对 Laravel 和 Postgres 还很陌生,所以我想做一些基本的查询。

以下是一些运行良好的查询:(json为列名)

$users = User::whereRaw("json ->> 'first_name' = 'Philipp'")->get();

$users = User::whereRaw("json ->> 'size' > '160'")->get();

$users = User::whereRaw("json #>> '{hobbies, daily}' = 'beer'")->get();

现在我想检查 drink beer 是否在 skills 中并且以下代码不起作用:

$users = User::whereRaw("json -> 'skills' ? 'drink beer'")->get();

这里我遇到语法错误:

SQLSTATE[42601]: Syntax error: 7 ERROR: syntax error at or near "$1"
LINE 1: select * from "users" where json ->> 'skills' $1 'drink beer...
^ (SQL: select * from "users" where json ->> 'skills' ? 'drink beer')

如何搜索drink beer

最佳答案

正如 @tapoueh 在 Twitter 上所建议的那样,解决方法可能是使用运算符的底层函数:jsonb_exists(jsonb, text)。所以你的查询将是

$users = User::whereRaw("jsonb_exists(json -> 'skills', 'drink beer')")->get();

由@docteur_klein 添加:A link to a similar problem .

关于php - 查询对象数组(带 JSONB 的 Postgres,Laravel 5),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32247498/

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