3

我必须要桌子,一张是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";
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)代替 thefindAll($topRage)并删除limit,但这只是做同样事情的另一种方式。

于 2012-05-09T17:33:41.630 回答
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);
于 2012-05-09T17:36:36.033 回答