Как заставить CDbCriteria выполнить distinct запрос по одному полю, а не по всем?

Доброго вечера.
Подтягиваю данные через Active Record, в качестве объекта с условиями использую объект CDBCriteria.
$criteria = new CDbCriteria();

$criteria->distinct = true;
$criteria->select = 'id, alias, title';
$criteria->condition = "urlrouting_show <> 0";
$criteria->order = 'title ASC';

return $this->findAll($criteria);

Поле alias может быть одинаковым у некоторых записей, но ввиду включенного distinct эти записи не отображаются в конечной выборке. Я же хочу включить distinct только для поля title. SQL-аналог такого выглядел бы так:
SELECT DISTINCT(title), id, alias FROM table
Сейчас же SQL-аналог выглядит иначе:
SELECT DISTINCT id, alias, title FROM table

Возможно ли так сделать в Active Record?
  • Вопрос задан
  • 325 просмотров
Решения вопроса 1
EnChikiben
@EnChikiben
$criteria = new CDbCriteria();

$criteria->select = ['id','alias','DISTINCT(title)'];
$criteria->condition = "urlrouting_show <> 0";
$criteria->order = 'title ASC';

return $this->findAll($criteria);
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы