Работа С Агрегированными Функциями

Привет, всем!

Ребята, подскажите, плиз.

Нужно выбрать среднее значение из колонки связанных таблиц.

Использую CDbCriteria:




$criteria=new CDbCriteria;

$criteria->condition = $cond; //накапливаются разные условия

$criteria->group = 't.house'; //группируются данные

$criteria->select = 'AVG(t.price) AS price';


$dataProvider = new CActiveDataProvider('Apartament',array(

	'criteria'=>$criteria,

	'pagination'=>$pages,

	'sort' => array('defaultOrder'=>'t.id DESC',),

));



Как теперь у view вывести это среднее значение?

Как можно вывести итоги столбцов которые я формирую в запросе?

через $data->… и что далее? Как правильно написать и вывести среднее значение цены, к примеру?

Спасибо!

Ну собственно есть много вариантов в зависимости того что вам нужно.

Например:

  1. Сделать некий геттер в модели для этого значения(если вам его немного раз подсчитывать).

  2. Что вам мешает использовать CArraydataProvider? Если вам нужно добавить это значение к уже существующим данным, то вытащите данные из предыдущего dataprovider методом getData(),

в этот массив добавьте свои значения avg либо сформируйте новый. Далее


$dataProvider=new CArrayDataProvider($output,array('keyField' => 'false'));

Этот метод подойдет если вы используете это для CGridview, в нем ваши данные будут доступны в виде элемента $dataprovider ($data[‘average’] в CGridView).

  1. Что вам мешает в данном случае просто сделать query() для этого параметра а не влазить в dataprovider с данными.

Спасибо за совет! Будем пробывать!!!