在findall中的Yii计数器查询

时间:2012-11-01 19:07:16

标签: php yii

我有以下查询

UserLogin::model()
-> with(array(
    'Provider'=> array(
        'select'=>'name'
    )
))
-> findAll(array(
    'select' => 'count(t.id) as count ',
    'group'=>'provider_id',
    'order'=>'provider_id'
));

我的观点是

<?php foreach($providerCounts as $providerCount): ?>
    <tr>
        <td><?php echo $providerCount['Provider']['name']; ?></td>
        <td><?php echo $providerCount['count']; ?></td>             
    </tr>
<?php endforeach; ?>

这是关系

'Provider'=>array(self::BELONGS_TO, 'Provider', 'provider_id'),

我收到错误

  

未定义属性“UserLogin.counts”。

不同模型中的相同查询正在运行。

现在我有两个问题

  • 为什么查询不起作用
  • 如何在yii中调试此类错误

2 个答案:

答案 0 :(得分:1)

您需要拥有User Login.count属性,以便在AR请求中使用as时,可以将返回的DB值分配给模型。

答案 1 :(得分:0)

您需要指定公共财产计数

class UserLogin extends CActiveRecord
{
    public $count = 0;

    public function rules() {
        // ...
        array('count', 'safe'),
        // ...
    }
}

对于调试,使用xdebug for php + ext for FireFox for debugging php

还使用yii-debug-toolbar(在yii ext site中搜索)