Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql 数组字段Postgres Laravel的原始查询_Postgresql_Laravel - Fatal编程技术网

Postgresql 数组字段Postgres Laravel的原始查询

Postgresql 数组字段Postgres Laravel的原始查询,postgresql,laravel,Postgresql,Laravel,我有一个表名detailshavingcontains字段,它在postgres中存储数组 id | contents 1 | ["1", "2", "5"] 2 | ["4", "2", "10"] 3 | ["3", "5"] 如果我查询5,它应该返回2条记录,即id1和3 我实际上想在laravel中实现 Details::whereRaw("contents ->> $id")->get(); // this doesn'

我有一个表名
details
having
contains
字段,它在postgres中存储数组

id    |   contents
 1    |   ["1", "2", "5"]
 2    |   ["4", "2", "10"]
 3    |   ["3", "5"]
如果我查询
5
,它应该返回2条记录,即id
1
3

我实际上想在laravel中实现

Details::whereRaw("contents ->> $id")->get(); // this doesn't work :p
如何进行原始查询?

如果您使用的是Mysql(带有JSON字段),您可能会使用
JSON\u CONTAINS()
或者
JSON\u SEARCH()
,但由于您使用的是postgresql,那么您可能可以从中找到解决方案。看起来很接近答案的是:

"SELECT * FROM details WHERE 5 = ANY (contents)"; //5 is the one of values in the array
还有其他方法,如使用
ALL()
WHERE IN
等。不幸的是,我从未将posgres与Laravel一起使用过,因此我无法真正说明如何构造查询,但也许只需执行以下操作即可:

Details::whereRaw("5 ANY (contents)")->get();
附言:如果你能做到这一点,这个答案可以随时更新

如果您使用的是Mysql(带有JSON字段),您可能会使用
JSON\u CONTAINS()
或者更确切地说是
JSON\u SEARCH()
,但是因为您使用的是postgresql,那么您可能可以从中找到解决方案。看起来很接近答案的是:

"SELECT * FROM details WHERE 5 = ANY (contents)"; //5 is the one of values in the array
还有其他方法,如使用
ALL()
WHERE IN
等。不幸的是,我从未将posgres与Laravel一起使用过,因此我无法真正说明如何构造查询,但也许只需执行以下操作即可:

Details::whereRaw("5 ANY (contents)")->get();
附言:如果你能做到这一点,这个答案可以随时更新


我得到了这个错误
SQLSTATE[42809]:错误的对象类型:7错误:op ANY/ALL(数组)需要右边的数组
我定义了
json
我得到了这个错误
SQLSTATE[42809]:错误的对象类型:7错误:op ANY/ALL(数组)需要右边的数组
我定义了
json