@Offereight

Как в Yii2 построить так SQL запрос, что бы была сортировка просто по заполненности поля, а не по содержимому в нем?

Доброго времени суток.
Как построить запрос в модели Yii, что бы проверялось заполненность поля в таблице? Сейчас в таблице хранится количество товаров, необходимо в запросе узнать просто что это количество не равно 0 и произвести сортировку так, что бы сначала шли товары, у которых количество не равно 0, а затем остальные. Сортировка просто по количеству товаров не подходит, так как кроме этой сортировки есть еще 2 (по цене и по еще одному полю).
  • Вопрос задан
  • 504 просмотра
Пригласить эксперта
Ответы на вопрос 3
webinar
@webinar Куратор тега Yii
Учим yii: https://youtu.be/-WRMlGHLgRg
2 запроса и union. Выбрали все что не 0 с одной сортировкой, выбрали все что 0 без сортировки, объеденили
$query1 = Product::find()->andWhere(['>','price',0])->orderBy('price');
$query2 = Product::find()->andWhere(['price'=>0]);
$query1->union($query2);
$query1->all(); // или скормили дата провайдеру
Ответ написан
Комментировать
qonand
@qonand
Software Engineer
$query->orderBy([
    new \yii\db\Expression('(`count` = 0) ASC')
])

$query - объект запроса который Вы выполняете, `count` - Ваш столбец с количеством
Ответ написан
kimono
@kimono
Web developer
Сортировка просто по количеству товаров не подходит, так как кроме этой сортировки есть еще 2 (по цене и по еще одному полю).

Так вы укажите первой сортировку товара именно по количеству, а дальше уже по цене и т.д. Это вопрос больше к самому запросу SQL, чем к Yii.
В Yii примерно так:
$products = Product::find()->where([/**/])->orderBy(['count' => SORT_DESC, 'price' => SORT_DESC, 'eshe_odno_pole' => SORT_DESC])->all();
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы