我正在玩CGridView小部件,我试图找出在以下环境中使用它是否合适: 假设我有两个数据库表,Car and Accident。每辆车可能与零次或多次事故有关。我想在网格视图中有一列包含每辆车的事故数,假设网格视图中的一行代表一辆汽车。 这是可行的使用GridView小部件,还是我应该尝试其他方法?
答案 0 :(得分:2)
您可以按如下方式为Car模型定义关系:
public function relations()
{
return array(
'accidents' => array(self::HAS_MANY, 'Accidents', 'Id'),
'accidentsCount' => array(self::STAT, 'Accidents', 'AccidentId'),
);
}
如果您使用count($ model->意外),那么您将加载所有相关模型,然后使用PHP计数功能获取模型数量,如果您关心性能和内存,您将使用stat relation accidentCount来获取数字事故。
答案 1 :(得分:1)
如果你有“汽车有一到多次事故”的关系,可以使用关系的简单计数。 $ model在这里开车。
<?php $this->widget('zii.widgets.grid.CGridView', array(
'id'=>'car-grid',
'dataProvider'=>$model->search(),
'filter'=>$model,
'columns'=>array(
'name',
array(
'header'=>'Accidents',
'value'=>'count($data->accidents)',
),
),
));
答案 2 :(得分:0)
最简单的方法是给汽车模型一个“getNumberOfAccidents()”getter。然后,您可以在网格中将其用作常规列(numberOfAccidents)。很容易馅饼:))