从两个模型中显示Yii Gridview中的计数数据

时间:2013-09-11 11:11:12

标签: php yii

我有2个表,服务器和ip,在ip表中我正在保存server_id。 现在我想在服务器列表页面上显示与一台服务器有多少总ips?

我的服务器型号代码:

   class Server extends CActiveRecord {

        public function relations(){
     return array('ipmodel'=>array(self::BELONGS_TO, 'IpManager', 'server_id'),
        );
       }
     }

我的CGridView代码:

     array( 
        'header' => 'IP Count',
        'value' => 'count($data->ipmodel)',
     ),

它只显示 1 但是对一台服务器有很多ips! 我怎么能这样做?

2 个答案:

答案 0 :(得分:1)

改变关系!

      'ipmodel'=>array(self::HAS_MANY, 'IpManager', 'server_id')

答案 1 :(得分:0)

最好的方法是使用内置的STAT Yii框架关系:

<强>关联:

'ipmodelcount'=>array(self::STAT, 'IpManager', 'server_id')

在网格视图中直接使用它:

array( 
  'header' => 'IP Count',
  'value' => '$data->ipmodelcount',
),

<强>阐释:

为什么要使用STAT关系进行计数?

HAS_MANY将加载所有相关模型的数据,而STAT关系运行计数查询服务器上的相关数据。因此,使用STAT将花费更少的执行时间来提供期望结果。