CGridView で各ユーザーの投稿数を表示する際に助けが必要です。
例: User および Post モデルがあります。$user->posts を介してユーザーの投稿にアクセスできます $user->num_posts を持つために追加できるものはありますか
User モデルなどで、単に stat リレーションを使用する必要があります。
public function relations()
{
return array(
// ...
'posts' => array(self::HAS_MANY, 'Post', 'user_id'),
'num_posts' => array(self::STAT, 'Post', 'user_id'),
// ...
);
}
http://www.yiiframework.com/doc/guide/1.1/fr/database.arr#statistical-query
編集: また、熱心な読み込みを使用してデータプロバイダーを構築する必要があります。
$criteria=new CDbCriteria;
$criteria->with('num_posts');
SQL クエリについては、次の 3 つのクエリのみを使用する必要があります。
Yii のログを見て確認してください。
Post モデルで getter を使用できます。このようなもの:
public static function getpostscount($id)
{
$total=0;
$provider=Post::model()->findall('user_id=:user_id',array(':user_id'=>$id));
foreach ($provider as $data)
{
if ($data->userid==$id)//userid name of column with user id in post model
{$total++;
}
}
return $total;
}
次に、ビューで user->id を getter に渡すだけで、このユーザーの投稿数が返されます。このようなもの:
echo "User have".Post::model()->getpostscount($user->id);//$user->id is id of user for wich we will look count of posts
よろしく。