我必须使用表格,一个是profile
,另一个是rating
。
rating
有一个字段profileid
,它是profile.id
的主键和一个具有评级值的字段。现在我想找到评分最高的字段并显示相应的配置文件。由于我是YII框架的新手,我遇到了麻烦。请帮我摆脱它。我正在做的事情如下所述。
$topRage=new CDbCriteria();
$topRage->select="*";
$topRage->alias="t1";
$topRage->order="rateing DESC";
$topRage->join="JOIN `ratings` ON `profile`.`id` = `t1`.`profileId`";
$topRage->limit="1";
答案 0 :(得分:1)
试试这个:
join='JOIN profile ON profile.id = t1.profileId';
如果您这样做:Ratings::model()->findAll($topRage)
,则已经在查询评级表,因此您需要加入个人资料表。
修改强>
对于echo你需要这样做:
$echo "Rating id: ".$rating->id."| Profile Id: ".$rating->profile->id."| Profile Name: ".$rating->profile->name."| Rating: ".$rating->ratingvalue;
不要忘记从控制器传递$rating
。
您也可以使用find($topRage)
代替findAll($topRage)
并删除limit
,但这只是做同样事情的另一种方式。
答案 1 :(得分:1)
只是在没有加入的情况下进行查询。
$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);