I got a query
$query = User::find();
$query->joinWith(['profile']);
$query->andWhere(['not', ['user.id' => $this->searching_user_id]]);
$query->andWhere(new Expression('profile.photo::jsonb ? \'id\''));
and get error
SQLSTATE[HY093]: Invalid parameter number: mixed named and positional parameters\n Failed to prepare SQL: SELECT COUNT(*) FROM \"user\" LEFT JOIN \"profile\" ON \"user\".\"id\" = \"profile\".\"user_id\" WHERE (\"user\".\"status\"=:qp0) AND (NOT (\"user\".\"id\"=:qp1)) AND (profile.photo::jsonb ? 'id')
so, if I run an SQL
SELECT "user".* FROM "user" LEFT JOIN "profile" ON "user"."id" = "profile"."user_id"
WHERE ("user"."status"='active')
AND (NOT ("user"."id"=1))
AND (profile.photo::jsonb ? 'id')
What im doing wrong?
sql
query you provided, does it fetch the correct records if run throughmysql
console orphpmyadmin
. - Muhammad Omer Aslam