3

私はテーブルを持っています.1つはで、もう1つはprofileですrating。 主キーであるフィールドと評価値を持つフィールドがありますrating。ここで、評価が最も高いフィールドを見つけて、対応するプロファイルを表示したいと考えています。私は YII フレームワークが初めてなので、問題があります。そこから抜け出すのを手伝ってください。私がやっていることを以下に説明します。profileidprofile.id

$topRage=new CDbCriteria();
$topRage->select="*";
$topRage->alias="t1";
$topRage->order="rateing DESC";
$topRage->join="JOIN `ratings` ON `profile`.`id` = `t1`.`profileId`";
$topRage->limit="1";
4

2 に答える 2

1

これを試して :

join='JOIN profile ON profile.id = t1.profileId';

これを行っている場合: Ratings::model()->findAll($topRage)、評価テーブルは既にクエリされているため、プロファイル テーブルと結合する必要があります。

編集:

エコーの場合、これを行う必要があります:

$echo "Rating id: ".$rating->id."|&nbspProfile Id: ".$rating->profile->id."|&nbspProfile Name: ".$rating->profile->name."|&nbspRating: ".$rating->ratingvalue;

$ratingただし、コントローラーから渡すことを忘れないでください。

find($topRage)の代わりに を使用してfindAll($topRage)を削除することもできますがlimit、それは同じことを行う別の方法です。

于 2012-05-09T17:33:41.630 に答える
1

join なしでクエリするだけです。

$topRage=new CDbCriteria();
$topRage->select="*";
$topRage->alias="t1";
$topRage->order="rateing DESC";
$topRage->limit="1";

$rating=Ratings::model()->findAll($topRage);
$profile=Profile::model()->findByPk($rating->profileId);
于 2012-05-09T17:36:36.033 に答える