0

user_id 列と post_id 列を持つ空のテーブル tbl_rating があります。私の投稿ビューでは、閲覧中の投稿が閲覧中のユーザーによって既に評価されているかどうかを確認しようとしています。ビューで以下を使用しています。

<?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 に答える