2013-10-18 74 views
0

我有一個空表tbl_rating,其中包含user_id和post_id列。在我的發佈視圖中,我試圖檢查查看的帖子是否已被用戶查看。我在視圖中使用了以下內容。當表爲空時,Yii查詢不返回空

<?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> 

但是,當我查看任何帖子時,它會顯示「您已經對此帖發表了評論。」即使沒有評級。查詢方法在表中沒有找到任何行時是否返回非空值的內容?

+0

是您的主機名本地主機?編輯你的etc/hosts文件並測試example.local等其他域。 – KNaito

回答

2

做這樣的說法會,所以你需要做的返回CDbQueryResult

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

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

我不建議這樣做,雖然這種方式。 如果你設置你的關係正常,你應該能夠做到像

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

示例請參見下面就declearing活動記錄的關係:http://www.yiiframework.com/doc/guide/1.1/en/database.arr#declaring-relationship

+0

rowCount方法奏效,謝謝。我很好奇我將如何建立關係,以便我可以檢查Post是否具有指定author_id的評級。有沒有辦法使用我在最初的問題中使用的查詢作爲關係在那裏?目前,我的博文模型有很多評級,並且有很多評論,評級只有一個博文和一個用戶。 – Voltemand11

+0

找到了一種方法來做到這一點。 Yii :: app() - > user-> getId())添加以下關係:'rating'=> array(self :: HAS_MANY,'Rating','post_id','condition'=>'user_id ='。 – Voltemand11