如何使用yii中的join进行创建条件

时间:2012-05-09 16:27:15

标签: yii

我必须使用表格,一个是profile,另一个是ratingrating有一个字段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";

2 个答案:

答案 0 :(得分:1)

试试这个:

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

如果您这样做:Ratings::model()->findAll($topRage),则已经在查询评级表,因此您需要加入个人资料表。

修改

对于echo你需要这样做:

$echo "Rating id: ".$rating->id."|&nbspProfile Id: ".$rating->profile->id."|&nbspProfile Name: ".$rating->profile->name."|&nbspRating: ".$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);