Database 从Magento数据库获取查询——mysql\u num\u行
什么函数与Magento中的mysql_num_行相等?对于Magento,正确的等价物是PHP函数 为什么? Magento通常使用Database 从Magento数据库获取查询——mysql\u num\u行,database,magento,fetch,mysql-num-rows,Database,Magento,Fetch,Mysql Num Rows,什么函数与Magento中的mysql_num_行相等?对于Magento,正确的等价物是PHP函数 为什么? Magento通常使用Varien_Data_Collection实例获取包含多条记录的结果集。Varien为这些集合实现了,也就是说,在您真正需要结果集之前,不会获取任何结果集 如果您查看Varien\u Data\u Collection类,您会发现该类确实实现了PHP以及该接口的适当count()方法: class Varien_Data_Collection implement
Varien_Data_Collection
实例获取包含多条记录的结果集。Varien为这些集合实现了,也就是说,在您真正需要结果集之前,不会获取任何结果集
如果您查看Varien\u Data\u Collection
类,您会发现该类确实实现了PHP以及该接口的适当count()
方法:
class Varien_Data_Collection implements IteratorAggregate, Countable
{
:
public function count()
{
$this->load();
return count($this->_items);
}
:
}
如果您现在问自己,延迟加载与计数记录有什么关系,那么您需要知道以通常的Magento方式查询集合,例如:
$collection = Mage::getModel('catalog/product')
->getCollection()
->addFieldToFilter(
'status',
Mage_Catalog_Model_Product_Status::STATUS_ENABLED
);
根本不获取结果集。但是,如何计算尚未获取的结果集的记录?对,你不能。而且也不能mysql\u num\u rows
。它首先获取结果集
现在,当您对集合调用count()
时,例如通过
$n = count($collection);
PHP的核心count()
函数将检测传递的参数$collection
实现一个Countable
接口,并定义了自己的count()
方法,因此它将调用该方法
这将导致真正获取结果集*并将其存储到$This->\u items
,最终允许计算记录并返回数字
*在Magento中,您还可以调用
foreach($collection as$product)
来真正获取结果集,但这是另一回事