0

サーバーとIPの2つのテーブルがあり、IPテーブルに保存してserver_idいます。サーバー一覧ページに、1 つのサーバーに関連する IP の総数を表示したいと思いますか?

私のサーバーモデルコード:

   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つしか表示されていませんが、1つのサーバーに対して非常に多くのIPがあります! どうすればこれを行うことができますか?

4

2 に答える 2

1

関係を変える!

      'ipmodel'=>array(self::HAS_MANY, 'IpManager', 'server_id')
于 2013-09-11T11:18:54.810 に答える
0

STAT最善の方法は、Yii フレームワークの組み込みリレーションを使用することです。

関係:

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

グリッド ビューでは、直接使用します。

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

説明:

なぜSTATカウントにリレーションを使用するのですか?

HAS_MANYSTAT関連データのサーバー上でリレーション カウント クエリを実行している間、すべての関連モデルのデータをロードします。したがって、使用STATすると、望ましい結果を提供するための実行時間が短くなります。

于 2015-11-26T04:44:49.693 に答える