2014-02-20 48 views
1

我試圖計算記錄的數量。我們已經看了好幾天,計數不正確。當沒有什麼時,它會一直返回1。所有其他模型的計數都能正確返回,所以這個模型非常棒。我需要檢查的其他地方?返回不正確的計數積極記錄

事情已經看了看:

  1. 的var_dump:所以它返回0;一切都如預期;
  2. 檢查範圍是否存在某種衝突;

$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, )); 
    } 
+0

http://www.yiiframework.com/doc/api/1.1/CDataProvider#itemCount-detail – soju

回答

1

你在做什麼是你正在返回CActiveDataProvider實例,它本身不包含數據,而你可以使用方法的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(); 
    } 

您也可以使用屬性totalItemCount$dataProvider->totalItemCount獲得的記錄總數。然後就可以直接使用此計在你的左值一樣

$pending=Model::model()->pending() 
2

試試這個代碼:

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