Пишу фильтр на сайт. В качестве БД - PosgreSQL.
По get параметрам пишу условия выборки.
$languageFilter = ActiveRecord::find();
$languageFilter->andWhere('"p"."field_id" = 17');
try {
$languageFilter->andWhere('"p"."value"::jsonb ?| array' . str_replace('"', "'", (string) Json::encode($filterGetData['language'])));
} catch (InvalidParamException $e) {
throw new UnprocessableEntityHttpException();
}
$resumeFind->andWhere($languageFilter->where);
В итоге выбрасывается исключение
SQLSTATE[42601]: Syntax error: 7 ERROR: syntax error at or near "$1"
LINE 1: AND (("p"."field_id" = 17) AND ("p"."value"::jsonb $1| array['3']))
Строчка "p"."value"::jsonb ?| array[3] -находит расхождения между пребывавшими данными и данными в бд.