如何在标准中获得计数字段?

时间:2014-06-14 08:07:35

标签: php yii count criteria

我尝试使用user_id构建一个具有group的查询,选择user_id,count(id),condition,join。 我可以通过findall命令得到一个真实的结果,但只有我不能显示计数(id) 我把代码留在了这里

控制器中的

       $criteria=new CDbcriteria();
        $criteria->condition = 'serviceId=:serviceId';
        $criteria->params = array(':serviceId'=>1);
        $criteria->group = 't.user_Id';
        $criteria->select = array('t.user_Id,count(psh_profile_information_services.id) AS count');
        $criteria->join = 'left join psh_profile_information_services on t.id=psh_profile_information_services.profileInformationId';
        $moli=  ProfileInformation::model()->findAll($criteria);
        $this->render('conectionpoint', array('moli'=>$moli ));

在视图中

foreach ($moli as $mol)
        {
            echo "user_Id:  ".$mol->user_id." --- count:".???????? ;

        }

打印$ mol

ProfileInformation Object ( [_new:CActiveRecord:private] => [_attributes:CActiveRecord:private] => Array ( [user_Id] => 1 [createDate] => 1393/03/23 - 15:49:26 [modifiedDate] => 1393/03/23 - 15:49:26 ) [_related:CActiveRecord:private] => Array ( ) [_c:CActiveRecord:private] => [_pk:CActiveRecord:private] => [_alias:CActiveRecord:private] => t [_errors:CModel:private] => Array ( ) [_validators:CModel:private] => [_scenario:CModel:private] => update [_e:CComponent:private] => [_m:CComponent:private] => )

1 个答案:

答案 0 :(得分:2)

在ProfileInformation类文件中 -

class ProfileInformation extends ActiveRecord
{
    $public $total_info;
    [....] //Rest of the code.

在“控制器操作”中, 改变 -

$criteria->select = array('t.user_Id,count(psh_profile_information_services.id) AS count');

$criteria->select = array('t.user_Id,count(psh_profile_information_services.id) AS total_info');

在视图文件中 -

foreach ($moli as $mol)
{
    echo "user_Id:  ".$mol->user_id." --- count:".$mol->total_info;
}

这应该可以正常工作。

如果没有,那就做简单的调试 -

echo "<pre>";

foreach($moli as $mol) {
    echo 'Total Info: ' . $mol->total_info . "<br />";
    foreach($mol as $key => $value) {
        echo $key . ' ' . $value . "<br />";
    }
    echo "<br />";
}

exit();

并检查值。