Ответы пользователя по тегу Yii
  • Как сгруппировать и отсортировать данные в AR?

    cimmwolf
    @cimmwolf
    Веб-разработчик
    Вам не обязательно создавать дополнительное поле в базе. Вы можете использовать конструкцию If внутри Select и результат этой функции вывести как дополнительную колонку.

    На чистом SQL это будет выглядеть так:
    SELECT *, IF(`salon_product`.`salon_id` IS NULL, 0, 1) AS `mark` 
    FROM `salon_product` 
    ORDER BY `mark` DESC


    В вашем случае должен сработать вот такой код:
    $c = new CDbCriteria();
    $c->select = '*, , IF(`sp`.`salon_id` IS NULL, 0, 1) AS `mark` ';
    $c->join = 'LEFT JOIN `SalonProduct` `sp` ON `t`.`id` = `sp`.`product_id`';
    $c->order = '`mark` DESC';
    $products = Product::model()->findAll($c);
    Ответ написан