如何使用YII';是否使用creates命令也返回项目总数?

如何使用YII';是否使用creates命令也返回项目总数?,yii,Yii,假设我做了一个简单的查询: $products = Yii::app()->db->createCommand()->setFetchMode(PDO::FETCH_OBJ) ->select('*') ->from('products') ->limit(9) ->queryAll(); 假设数据库中有500个产品。如果包含“限制”,是否有办法让YII自动返回产品总数(计数)?可能会返回如下所示的对象: $products->

假设我做了一个简单的查询:

$products = 
 Yii::app()->db->createCommand()->setFetchMode(PDO::FETCH_OBJ)
  ->select('*')
  ->from('products')
  ->limit(9)
  ->queryAll();
假设数据库中有500个产品。如果包含“限制”,是否有办法让YII自动返回产品总数(计数)?可能会返回如下所示的对象:

$products->products = array( ... products ... )
$products->totalProducts = 500;
$dbCommand = Yii::app()->db->createCommand("
SELECT COUNT(*) as count FROM `products`");
$data = $dbCommand->queryAll();

问题是,如果包含限制,它将返回项目,因此计数将为9。我想要一个解决方案,它将返回9个项目,但如果有200个项目,还将返回200个项目的计数

您可以尝试使用如下计数:

$products->products = array( ... products ... )
$products->totalProducts = 500;
$dbCommand = Yii::app()->db->createCommand("
SELECT COUNT(*) as count FROM `products`");
$data = $dbCommand->queryAll();
希望有帮助


编辑:您可能也会发现这一点很有用:

您必须运行两个查询(一个无限制计数(*)查询,然后是限制查询),或者您可以发送消息,您可以使用检索产品,并让它为您执行此操作。但它通常需要两个查询

注意:Yii 1.1.13中的一个出色功能是,如果要使用数据提供程序,可以将查询生成器命令发送到
CSqlDataProvider
。更多信息请访问。这样,您既可以使用query builder的强大功能,又可以将数据转移到数据提供程序中。以前,您必须手动构建SQL语句或获取命令的queryText

尝试使用execute()而不是query(),因为execute返回行数。
Yii::app()->db->createCommand('select count(*) from tbl_table')->queryScalar();
例如:

试试这个-

$sql = Yii::app()->db->createCommand('select * from tbl_table')->queryAll(); //It's return the Array

echo count($sql); //Now using count() method we can count the array.
为什么不简单:

$сount = Yii::app()->db->createCommand('select count(*) from table')->queryScalar();
echo $count;