@maxyc_webber
Web-программист

Yii2: Как сделать сортировку по кол-ву записей через кросс-таблицу?

В продолжении темы Yii2: Как сделать hasMany через кросс таблицу и count всех записей?
Надо бы как-то теперь все это отсортировать по members_count...
  • Вопрос задан
  • 216 просмотров
Решения вопроса 2
vakorovin
@vakorovin
Разработчик
У меня так:
Модель Service - услуги. Подключаются к клиентам посредством таблицы clients_services (ServiceViaUser), ну и модель Client.

В ServiceSearch:

public function search($params)
    {
        $query = Service::find();

        $query->joinWith(['clients']);

        $query->groupBy(['products_services.id']);

        $query->select([Service::tableName().'.*', 'COUNT('.ServiceViaUser::tableName().'.id) as num_clients']);

        $dataProvider = new ActiveDataProvider([
            'query' => $query,
        ]);

        $dataProvider->sort->attributes['num_clients']=[
            'asc' => ['num_clients' => SORT_ASC],
            'desc' => ['num_clients' => SORT_DESC],
        ];


Думаю этого кода достаточно для понимания, если нет, отпишитесь, я приведу более подробные примеры.
Ответ написан
как вариант создать представление в БД, которое выводит нужные вам данные, а для этого представления создать модель и использовать ее
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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