Я пытаюсь загрузить cGridView с результатами запроса между двумя таблицами (благотворительность и голоса).
Попытка показать количество голосов в таблице голосов для благотворительности. У таблицы голосования есть FK к таблице благотворительности.
Я мог бы сделать это в SQL с левым соединением, но cGridView требует объект CActiveDataProvider для отображения данных, и я не уверен, как я могу объединить две таблицы, чтобы вернуть результат, который не только считается, но и не показывает любые результаты, которые равны 0 и упорядочены по голосам.
Я сейчас делаю:
в модели голосования:
public function relations()
{
return array(
'voteCount'=>array(self::STAT, 'Vote', 'charity_id'),
);
}
charity_id - FK для таблицы благотворительности.
Затем, чтобы построить виджет CGridView:
$criteria=new CDbCriteria(array(
'with' => 'voteCount',
));
$dataProvider=new CActiveDataProvider('Charity', array(
'pagination' => false,
'criteria' => $criteria,
));
$this->widget('zii.widgets.grid.CGridView', array(
'dataProvider'=>$dataProvider,
'ajaxUpdate'=>true,
'columns'=>array(
'Name',
array(
'name'=>'vote.voteCount',
'value'=>'CHtml::encode($data->voteCount)',
),
),
));
Сейчас он возвращает несколько результатов, и я не могу понять, как отсортировать и добавить предложение where.
Любая помощь?