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