0

我有一个空表 tbl_rating,其中包含 user_id 和 post_id 列。在我的帖子视图中,我试图检查正在查看的帖子是否已经被查看它的用户评分。我在视图中使用以下内容。

<?php
$sql='SELECT * FROM tbl_rating WHERE post_id='.$model->id.' AND user_id='.Yii::app()->user->getId().';';
        $connection=Yii::app()->db;
        $command=$connection->createCommand($sql);
        $query=$command->query();
if($query != null):
?>
<p>You've already rated this post.</p>

但是,当我查看任何帖子时,它会显示“您已对该帖子进行评分”。即使没有评分。当在表中找不到任何行时,查询方法是否返回 null 以外的内容?

4

1 回答 1

2

这样做会返回一个 CDbQueryResult 所以你需要做

if($query->rowCount !== 0) { }

(见:http ://www.yiiframework.com/doc/api/1.1/CDbCommand#query-detail )

我不建议这样做。如果您正确设置了关系,您应该能够执行类似的操作

if($model->rating !== null) { }

有关清除活动记录关系的示例,请参见以下内容:http ://www.yiiframework.com/doc/guide/1.1/en/database.arr#declaring-relationship

于 2013-10-18T02:21:29.370 回答