0

私はyiiフレームワークを学んでいますが、問題があります。私はCMenuを持っています:

<?php $this->widget('zii.widgets.CMenu',array(
            'items'=>array(
                array('label'=>'Home', 'url'=>array('/site/index')),
                array('label'=>'Messages ('. User::model()->with('messages_count')->find() .')', 'url'=>array('/message/index')),
                array('label'=>'Login', 'url'=>array('/site/login'), 'visible'=>Yii::app()->user->isGuest),
                array('label'=>'Logout ('.Yii::app()->user->name.')', 'url'=>array('/site/logout'), 'visible'=>!Yii::app()->user->isGuest)
            ),
        )); ?>

ユーザーモデルの関係:

'messages_count' => array(self::STAT,'Message','owner_id'),

「メッセージ(管理者)」を表示するサイトでは、「メッセージ(3)」が必要なので、この行は間違っていると思います:

User::model()->with('messages_count')->find() 

しかし、カウントだけを取得する方法がわかりません。手伝って頂けますか?

Ps リレーションに条件を追加する可能性はありますか?

4

1 に答える 1

1

find()指定された条件でアクティブなレコードを 1 つ検索します。

count()指定されたクエリ条件を満たす行の数を見つけます。

あなたの解決策:

User::model()->with('messages_count')->count();

CDbCriteria:

$criteria=new CDbCriteria();
$criteria->with = 'messages_count';
// your extra criteria 
User::model()->count($criteria);

特に Yii と CActiveRecord の操作を学んでいる場合は、必ず Yii のドキュメントを確認してください: http://www.yiiframework.com/doc/api/1.1/CActiveRecord

于 2013-07-17T08:17:56.243 に答える