我有一个正在使用的 magento 安装catalog_product_entity
,而其他人catalog_product_flat_1
在查询期间使用它来检索产品集合。
为什么是这样?
我有一个正在使用的 magento 安装catalog_product_entity
,而其他人catalog_product_flat_1
在查询期间使用它来检索产品集合。
为什么是这样?
您可以配置 Magento 是否使用平面表或实体进行集合。检查Use Flat Catalog Product
下的 Magento 管理部分System->Config->Catalog: Frontend
。更改此设置时,会刷新 Magento 缓存存储,因为缓存了管理配置。索引失效也可能在这里发挥作用,我不确定 Magento 是否在不是最新的情况下使用平面表。
Buttle Butkus报告说,可能需要将其切换到No
并Yes
再次切换才能激活它。
如果您在管理区域中加载集合,则不使用平面表。
这是确定的Mage_Catalog_Model_Resource_Product_Collection::_construct()
:
/**
* Initialize resources
*
*/
protected function _construct()
{
if ($this->isEnabledFlat()) {
$this->_init('catalog/product', 'catalog/product_flat');
}
else {
$this->_init('catalog/product');
}
$this->_initTables();
}
/**
* Retrieve is flat enabled flag
* Return alvays false if magento run admin
*
* @return bool
*/
public function isEnabledFlat()
{
if (Mage::app()->getStore()->isAdmin()) {
return false;
}
if (!isset($this->_flatEnabled[$this->getStoreId()])) {
$this->_flatEnabled[$this->getStoreId()] = $this->getFlatHelper()
->isEnabled($this->getStoreId());
}
return $this->_flatEnabled[$this->getStoreId()];
}