Всем привет.
Хочу сделать запрос:
$res = Clients::find()
->alias('cl')
->select(['cl.*','token.meta_key','token.meta_val'])
->innerJoin(ClientsTokens::tableName().' as token','token.client_id=cl.id')
->where('cl.active=1 AND cl.service_id@>{'.$serviceID.'} AND token.meta_key=\'token\' AND token.meta_val NOT LIKE \'\' AND token.service_id=:service_id',[':service_id'=>$serviceID])
->each()
->next();
Мне выдается сообщение:
Exception 'yii\db\Exception' with message 'SQLSTATE[42601]: Syntax error: 7 ERROR: syntax error at or near "{"
LINE 1: ...ent_id=cl.id WHERE cl.active=1 AND cl.service_id@>{2} AND to...
^
The SQL being executed was: SELECT "cl".*, "token"."meta_key", "token"."meta_val" FROM "clients" "cl" INNER JOIN "clients_tokens" "token" ON token.client_id=cl.id WHERE cl.active=1 AND cl.service_id@>{2} AND token.meta_key='token' AND token.meta_val NOT LIKE '' AND token.service_id=2'
in /Users/km/work/service.dev/vendor/yiisoft/yii2/db/Schema.php:636
Error Info:
Array
(
[0] => 42601
[1] => 7
[2] => ERROR: syntax error at or near "{"
LINE 1: ...ent_id=cl.id WHERE cl.active=1 AND cl.service_id@>{2} AND to...
^
)
Как поправить?
$res = Clients::find()
->alias('cl')
->select(['cl.*','token.meta_key','token.meta_val'])
->innerJoin(ClientsTokens::tableName().' as token','token.client_id=cl.id')
->where('cl.active=1 AND cl.service_id@>\'{'.$serviceID.'}\' AND token.meta_key=\'token\' AND token.meta_val NOT LIKE \'\' AND token.service_id=:service_id',[':service_id'=>$serviceID])
->each();
foreach($res as $re) {
var_dump($re);
}
Нужно json взять в ковычки, тогда валидатор yii считает, что это строка и не пытается провалидировать.
Виртуальный выделенный сервер (VDS) становится отличным выбором