IF внутри SELECT

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
IIIKET
Сообщения: 116
Зарегистрирован: 2015.06.10, 16:38
Откуда: Kharkiv
Контактная информация:

IF внутри SELECT

Сообщение IIIKET »

Доброго дня пишу запрос:

Код: Выделить всё

(new QuerySphinx)
            ->select([
                'id',
                new \yii\db\Expression('IF(`partner_id` = '.$this->partner_id.', 1, 0) AS `current_partner`'),
            ])
            ->from('idx_products_similar_ru_ru')
            ->andWhere(new \yii\db\Expression('id<>'.$this->id))
            ->andWhere(['category_id' => $this->category_id])
            ->orderBy(['current_partner' => SORT_DESC])
            ->limit(10)
            ->all()
Суть в том что IF выбросить и вместо нег оиспользовать custom ORDER BY нельзя, так как сфинкс их не поддерживает.
А Yii в ответ мне:

Код: Выделить всё

SQLSTATE[42000]: Syntax error or access violation: 1064 index idx_products_similar_ru_ru: parse error: Sphinx expr: syntax error, unexpected TOK_IDENT near 'partner_id` = 184, 1, 0)'
The SQL being executed was: SELECT `id`, IF(`partner_id` = 184, 1, 0) AS `current_partner` FROM `idx_products_similar_ru_ru` WHERE (id<>1101670) AND (`category_id`='1704') ORDER BY `current_partner` DESC LIMIT 10
phpshko
Сообщения: 260
Зарегистрирован: 2015.03.21, 02:49

Re: IF внутри SELECT

Сообщение phpshko »

попробуйте вот так (удалить обратные кавычки возле partner_id )

Код: Выделить всё

new \yii\db\Expression('IF(partner_id = '.$this->partner_id.', 1, 0) AS `current_partner`'),
Аватара пользователя
vitalik1183
Сообщения: 1675
Зарегистрирован: 2014.07.01, 08:42

Re: IF внутри SELECT

Сообщение vitalik1183 »

Только про это не забываем!
Yii2!
Ответить