Страница 1 из 1

Yii 1.1 и CStatRelation

Добавлено: 2013.04.30, 22:13
Restlin
При работе системы необходимо выполнять запросы вида:

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

SELECT doc_id as id, count(*) AS amount, max(date_in) max_date_in
from doc_execution 
group by doc_id;
Результаты подобного запроса необходимо обрабатывать в модели, поэтому очень удобно реализовать его через CStatRelation.
К сожалению на текущий момент параметр select у CStatRelation не позволяет получить несколько параметров из такого вида отношений.
Возможна ли доработка CStatRelation в данном ключе? Либо посоветуйте пожалуйста как обойти данную ситуацию?

Re: Yii 1.1 и CStatRelation

Добавлено: 2013.05.01, 10:57
samdark
Это никаким боком не похоже на stat. Stat предназначен исключительно для агрегирующих запросов.

Re: Yii 1.1 и CStatRelation

Добавлено: 2013.05.01, 14:07
Restlin
Более подробно опишу ситуацию.
Есть модель Document на основе таблицы document и есть другая таблица doc_execution. Таблицы связаны по отношению document.id = doc_execution.doc_id (один ко многим). При выводе списка моделей Document в gridView необходимо показать общее количество исполнений документа и последнее время ввода исполнений.
На sql я бы написал так:

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

SELECT t.*,t1.amount,t1.date_in FROM
document t
left join 
( select doc_id, count(*) AS amount, max(date_in) AS date_in
from doc_execution
group by doc_id) t1 on t1.doc_id = t.id
Разве stat не предназначен для получения подобной информации из связанных таблиц?

Re: Yii 1.1 и CStatRelation

Добавлено: 2013.05.01, 14:31
samdark
Вообще такой запрос у вас базе сделает очень плохо. Лучше всего завести счётчик в табличке document и инкрементировать его вовремя.