当表为空时,Yii查询不返回null

时间:2013-10-18 02:00:56

标签: php mysql sql yii blogs

我有一个空表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以外的其他内容吗?

1 个答案:

答案 0 :(得分: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