SQLクエリでカウントを見つけることを強くお勧めします。そうしないと、システムパフォーマンスが低下します。SQLクエリ自体でカウントを確認する方法は3つありますYii 1
CActiveRecord
。それらは次のとおりです。
1. count()メソッド
指定されたクエリ条件を満たす行数を検索します。
例 :
$count = Notification::model()->count('user_id'=> Yii::app()->user->uid);
2. countByAttributes()メソッド(v1.1.4以降で使用可能)
指定された属性値を持つ行の数を検索します。
例 :
$count = Notification::model()->countByAttributes(array(
'user_id'=> Yii::app()->user->uid
));
3. countBySql()メソッド
指定されたSQLステートメントを使用して行数を検索します。これはCDbCommand::queryScalar
、指定されたSQLステートメントとパラメーターを使用して呼び出すのと同じです。
例:
$count = Notification::model()
->countBySql("select *from notification where user_id=:userId",
array(':userId'=>Yii::app()->user->uid)
);
次のコードは使用しないでください。システムパフォーマンスが低下します。
$notifyModels = Notification::model()->findAllByAttributes(array(
'user_id'=> Yii::app()->user->uid
));
$count = count($notifyModels);
なぜなら、カウントを見つけるための2つの関数呼び出しがあるからです