これは私の問題の回避策です。 PostgreSQL関数を使用して?
を置き換えることにより、問題を解決します。 演算子。
PDOがPostgreSQLに準拠しなくなるため、あまり好きではありません。しかし、本当の解決策は見つかりませんでした。
CREATE FUNCTION json_key_exists(JSONB,TEXT) RETURNS BOOLEAN LANGUAGE SQL STABLE AS $f$
SELECT $1 ? $2
$f$;
そして今、私はクエリを使用することができます:
SELECT * FROM post WHERE json_key_exists(locations, :location);
回避策は、freenode #postgresql
のすばらしいRhodiumToadによって提案されました。編集
@Abelistoが提案したように、上記の関数をjsonb_exists(jsonb, text)
として作成する必要はありません。 avialabeです