2017-04-24 8 views
0

私は2つのテーブル代理店と代理店を持っていますが、各代理店がカウントクエリを使用している代理店の数を表示したい( "代理店"テーブルに 'agency_id' 。ここではold postがstackoverflowにありますが、完全には答えられていません。ここでYii2 - activerecordを使用したgridviewの関係データの数を表示

は、私がこれまで試したものです:

機関モデルでは(エージェントはGridViewの機関でカウントを取得するために):

*/ 
public function getAgents() 
{ 
    return $this->hasMany(Professionnels::className(), ['agency_id' => 'id']); 

} 

エージェントモデルでは(GridViewのエージェントに代理店の名前を取得するには):

'columns' => [ 
     ...., 
     ['label' => 'Agents Number','attribute' => 'count(agents.id'),] 
:GridViewのを示している代理店に鑑み

public function getAgencies() 
{ 
    return $this->hasOne(Agencies::className(), ['id' => 'agency_id']); 
} 

そしてAgenciesSearch中:

$query = Agencies::find()->with('agents'); 

答えて

2

あなたのコラムのvalue属性であなたの関係上count()関数を呼び出すことができます。

'columns' => [ 
...., 
    [ 
    'label' => 'Agents Number', 
    'attribute' => 'agents', 
    'value' => function ($model) { return $model->getAgents()->count();} 
    ] 

別のオプションを取得するための新しい方法を作成することです代理店の代理店のモデルに含まれるエージェント:

public function getAgentsCount() 
{ 
    return $this->getAgents()->count(); 
} 

Aあなたの列にそれを参照してください:

'columns' => [ 
    ...., 
     [ 
     'label' => 'Agents Number', 
     'attribute' => 'agentsCount', 
     ] 
+0

それは魅力として動作します。私はまだ並べ替え&filtringを定義する必要がありますが、あなたに感謝 –

関連する問題