我正在尝试计算记录数。我们看了几天,计数不正确。没有任何东西时它会一直返回1。所有其他型号的计数都正确返回,所以这个非常棒。我还需要检查其他任何地方吗?
已经看过的事情:
$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 :(得分:2)
试试这段代码:
$dp = Model::model()->pending();
echo count($dp->getData())
答案 1 :(得分: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()