group + count по связанным данным?

Общие вопросы по использованию фреймворка. Если не знаете как что-то сделать и это про Yii, вам сюда.
Ответить
waid
Сообщения: 23
Зарегистрирован: 2013.03.04, 10:09

group + count по связанным данным?

Сообщение waid »

Никак не могу сообразить, как решить задачу с помощью AR.

Есть список сотрудников (EmployeeCard - таблица employee_card) с информацией об их работе (EmployeePosition - таблица employee_position_assignment)
Например, у каждого сотрудника есть должность - 'employeePositions.jobPost' (employee_position_assignment.job_post_id).
Ну и так далее, довольно большой список фильтров и связанных моделей еще.

Нужно вывести этот список сотрудников с группировкой по должности и информацией о количестве сотрудников внутри группы и общей паджинацией.
Например:
[Повар (2)]
Иванов И.И.
Сидоров В.В.
[Сторож(5)]
Сергеев С.С.
...

При этом сперва должна идти сортировка по названию группы, а потом по ФИ.
Сейчас это выглядит так:

Код: Выделить всё

        $criteria = new CDbCriteria;
        $criteria->with = array(
                    'employeePositions' => array('alias'=>'employee_position_assignment'),
                    'employeePositions.jobPost',
                    ....
            );

        $criteria->alias = 'employee_card';
        $criteria->order = 'employee_card.last_name, employee_card.first_name';
        $criteria->group = "employee_position_assignment.job_post_id";
        $models = EmployeeCard::model()->findAll($criteria);
 
Ругается на
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'employee_position_assignment.job_post_id' in 'group statement'

Перепробовал всевозможные комбинации (employeePositions.job_post_id, employeePositions.jobPost.id и тд), не получается.
Подскажите, как можно решить данную задачу через AR? :?:
Аватара пользователя
Said
Сообщения: 138
Зарегистрирован: 2015.06.04, 10:16

Re: group + count по связанным данным?

Сообщение Said »

Доброго времени суток.
Лучше создайте view (в mysql или что вы используете) и модел и работайте как таблица
все group и.т.д. будет в теле view и не создаст вам подобные проблемы
Ответить