Dit is een oplossing voor mijn probleem. Het lost het probleem op door de PostgreSQL-functie te gebruiken om de ?
. te vervangen telefoniste.
Ik vind het niet echt leuk omdat het PDO niet meer conformeert aan PostgreSQL. Maar ik vond geen echte oplossing.
CREATE FUNCTION json_key_exists(JSONB,TEXT) RETURNS BOOLEAN LANGUAGE SQL STABLE AS $f$
SELECT $1 ? $2
$f$;
En nu kan ik de query gebruiken:
SELECT * FROM post WHERE json_key_exists(locations, :location);
De oplossing werd voorgesteld door de fantastische RhodiumToad van freenode #postgresql
Bewerken
Zoals @Abelisto suggereerde, is het niet nodig om de bovenstaande functie te maken als jsonb_exists(jsonb, text)
is verkrijgbaar