0

CGridView で各ユーザーの投稿数を表示する際に助けが必要です。

例: User および Post モデルがあります。$user->posts を介してユーザーの投稿にアクセスできます $user->num_posts を持つために追加できるものはありますか

4

2 に答える 2

2

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 つのクエリのみを使用する必要があります。

  • グリッドビューのページ数の 1 つのクエリ、
  • ユーザーモデルを取得するための1つのクエリ、
  • ユーザー num_posts を取得するための 1 つのクエリ。

Yii のログを見て確認してください。

于 2013-04-23T13:30:44.010 に答える
-1

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

よろしく。

于 2013-04-23T13:10:24.547 に答える