Как сделать выборку уникальных значений через ActiveRecord в Yii2?

Необходимо сделать выборку уникальных значений, т.е. с помощью DISTINCT. Нигде не нашел как это можно сделать с помощью ActiveRecord, не прибегая к createCommand().
  • Вопрос задан
  • 9182 просмотра
Решения вопроса 1
sanchezzzhak
@sanchezzzhak
Ля ля ля...
// SELECT DISTINCT `user_id` ...
$query = new Query();
$query->select('user_id')->distinct();
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Isolution666
@Isolution666
Full-Stack Developer
Я не стал изобретать велосипед. Оказалось, что вывести список записей через цикл на столько просто и легко и элементарно)) Повторяющиеся записи исчезают, остаётся список только уникальных записей!

Просто в экшене контроллера напиши:

public function actionPage(){
        $select = City::find()->select(['obl'])->distinct()->all();
        return $this->render('page', ['select' => $select,]);
    }



Немного поясню City это модель, которая обращается к некой таблице в БД
obl - название столбца в таблице, записи которого хотите вывести


Топорный пример вывода списка записей через select:

<select class="form-control">
                    <?php foreach ($select as $m) { ?>
                        <option value="<?=$m->obl;?>"><?=$m->obl;?></option>
                    <?php } ?>
                </select>


Испытано лично, работает! Подсчёт уникальных записей, это:
->count();

--

$select = City::find()->select(['obl'])->distinct()->count();

--
<p>У вас всего <?=$select;?> уникальных записей</p>

В документации Yii взял, там и черпаю знания, кому помог? )) Был рад стать полезен. Успехов!
Ответ написан
Ваш ответ на вопрос

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

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