0

Yii の関係モデルで指定された基準を動的に変更する方法はありますか?

たとえば、ゲームモデルでこのリレーションシップを使用すると、獲得したすべてのポイントが得られます

'total_points' => [self::STAT, 'Point', 'game_id', 'select' => 'SUM(earned)']

これはうまくいきます。ただし、動的に選択された特定のユーザー ID に基づいて、これを削減できるようにしたいと考えています。

user_id が Point モデルの属性である特定の変化するユーザーに対して、このゲームで獲得した total_points を返す次のようなメソッドを作成するにはどうすればよいでしょうか?

function getUserPoints($user_id) {
    return $this->someCriteriaChangingMethod('user_id = $user_id')->total_points;
}
4

3 に答える 3

4

yii ガイドにより、これは動作するはずです:

$model->total_points(array(
    'condition' => "user_id = :uId",
    'params' => array(':uId' => $user_id),
));

これは、あなたの望むことですか?

于 2012-05-16T23:13:59.473 に答える
0

私はあなたがそれを行うことができるとは思わない. ここに別の方法があります

function getUserPoints($user_id) {

     $row=Yii::app()->db->createCommand()->select("SUM(earned) as total_points")
                    ->from("point")
                    ->where('user_id = :user_id',array(":user_id"=>$user_id))
                    ->queryRow();
    return $row["total_points"];

}
于 2012-05-16T18:07:26.710 に答える
0

関係を動的に変更するには、メソッドを使用CActiveRecord->getRelated()できます。これにより、これを行うことができます

function getUserPoints($user_id) {
    $t = $this->getRelated('total_points', false, [
        'condition' => 'user_id = :user_id',
        'params' => [':user_id' => $user_id],
    ]);

    return $t;
}
于 2012-05-16T18:27:39.123 に答える