查询中的问号运算符

Aza*_*mat 5 php postgresql laravel laravel-5

在我的laravel 5应用程序中,我使用的是PostgreSQL的jsonb数据类型,它有?运算符.

但是我无法在我的模型中使用它,因为laravel使用问号作为绑定.

具体来说,在whereRaw()方法中:

$query->whereRaw("jsonb_column ? 'a_key'")
Run Code Online (Sandbox Code Playgroud)

如何在查询中使用问号?

小智 13

您可以考虑使用函数调用而不是运算符。

首先你应该找出哪个函数?运算符通过对您的 PostgresSQL 数据库的以下查询使用:

SELECT oprname, oprcode FROM pg_operator WHERE oprname = '?'
Run Code Online (Sandbox Code Playgroud)

在我的开发数据库上,它是jsonb_exists函数,然后您可以将查询更新为:

$query->whereRaw("jsonb_exists(jsonb_column, 'a_key')")
Run Code Online (Sandbox Code Playgroud)

我希望它有帮助,快乐编码。


小智 -2

尝试使用反斜杠转义它,如下所示

SELECT * FROM table WHERE id = \?;
Run Code Online (Sandbox Code Playgroud)