返回不正确的activerecords计数

返回不正确的activerecords计数,activerecord,yii,Activerecord,Yii,我在数唱片的数量。我们已经看了好几天了,但计数不正确。当一无所有时,它一直返回1。所有其他型号的计数都正确返回,所以这一款相当奇怪。还有什么地方需要我查一下吗 已经看到的情况: var_dump:因此它返回0;一切如期而至 检查范围是否存在某种冲突 $pending=count(Model::Model()->pending()) 规则在模型中是安全的。型号: public function pending() { $criteria = new CDbCriteria;

我在数唱片的数量。我们已经看了好几天了,但计数不正确。当一无所有时,它一直返回1。所有其他型号的计数都正确返回,所以这一款相当奇怪。还有什么地方需要我查一下吗

已经看到的情况:

  • var_dump:因此它返回0;一切如期而至
  • 检查范围是否存在某种冲突
    $pending=count(Model::Model()->pending())

    规则在模型中是安全的。型号:

    public function pending()
        {
            $criteria = new CDbCriteria;
    
            $now = new CDbExpression("NOW()");
            $criteria->addCondition('effective_to_date > '.$now);
            $criteria->addCondition('effective_from_date < '.$now);
            $criteria->compare('target_accept',"ACCEPTED");
    
            return new CActiveDataProvider($this, array(   'criteria'=>$criteria,  ));
        }   
    
    公共函数挂起()
    {
    $criteria=新的CDB标准;
    $now=newCDBExpression(“now()”);
    $criteria->addCondition(“生效日期>”。$now);
    $criteria->addCondition('effect_from_date<.$now');
    $criteria->compare('target_accept',“accept”);
    返回新的CActiveDataProvider($this,数组('criteria'=>$criteria,);
    }   
    
    尝试以下代码:

    $dp = Model::model()->pending();
    echo count($dp->getData())
    

    您所做的是返回本身不包含数据的
    cactivedaptaprovider
    实例,而您可以使用getData()方法获取对象列表。
    你可以这样写

    public function pending()
        {
            $criteria = new CDbCriteria;
    
            $now = new CDbExpression("NOW()");
            $criteria->addCondition('effective_to_date > '.$now);
            $criteria->addCondition('effective_from_date < '.$now);
            $criteria->compare('target_accept',"ACCEPTED");
            $dataProvider=new CActiveDataProvider($this, array(   'criteria'=>$criteria,  ));
            return $dataProvider->getData();
        }  
    
    $pending=Model::model()->pending()