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()查找具有指定条件的单个活动记录。

count()查找满足指定查询条件的行数。

您的解决方案:

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

使用 CDbCriteria:

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

请务必查看 Yii 文档,特别是如果您正在学习使用 Yii 和 CActiveRecord:http ://www.yiiframework.com/doc/api/1.1/CActiveRecord

于 2013-07-17T08:17:56.243 回答