Вычисляемое поле order by для active record

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
kapkapiton
Сообщения: 29
Зарегистрирован: 2018.01.30, 11:04
Контактная информация:

Вычисляемое поле order by для active record

Сообщение kapkapiton »

Добрый день, подскажите пожайлуста как сделать вычисляемое поле для order by для active record:

Внутри ORDER BY нужно поставить это: ORDER BY ABS(`forecast`- 1.16684)

Запрос sql:

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

SELECT c.*, u.user_email FROM competition c LEFT JOIN users u ON c.user_id = u.user_id WHERE c.pair = 'EUR/USD' ORDER BY ABS(`forecast`- 1.16684)
Написал в yii2:

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

$winners = Competition::find()
                    ->leftJoin($customerTable, "$competitionTable.user_id = $customerTable.user_id")
                    ->where(["pair" => $pair])
                    ->orderBy("forecast - 1.16684")
                    ->all();
Выдается ошибка:

Column not found: 1054 Unknown column 'forecast - 1.16684' in 'order clause''
kukuruku
Сообщения: 1318
Зарегистрирован: 2011.02.14, 11:36

Re: Вычисляемое поле order by для active record

Сообщение kukuruku »

попробуй добавить колонку в выборку а потом сортируй по ней
andku83
Сообщения: 988
Зарегистрирован: 2016.07.01, 10:24
Откуда: Харьков

Re: Вычисляемое поле order by для active record

Сообщение andku83 »

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

->orderBy(new \yii\db\Expression("ABS(`forecast`- 1.16684)"))
Ответить