如何删除magento产品系列中的所有项目?

Ant*_*ore 9 collections magento

似乎不起作用:

<?php
    $collection = Mage::getModel('catalog/product')->getCollection();
    foreach($collection->getItems() as $key => $_product){
        //product
        $collection->removeItemByKey($key);
    }

?>
Run Code Online (Sandbox Code Playgroud)

$ collection仍然填充

小智 14

如果您想使用空集合,最好的方法是使用一个始终生成空集的过滤器加载它.这是一个例子:

$collection = Mage::getModel('catalog/product')->getCollection()
    ->addFieldToFilter('entity_id', 0);
Run Code Online (Sandbox Code Playgroud)

因为Magento产品ID从1开始,所以此集合将保持为空,直到您使用addItem()方法向其添加项目.

另一方面,clear()和removeItemByKey()只会触发第二次运行到数据库以重新获取您不想要的数据.


Ala*_*orm 7

你的问题没有意义.运行以下代码

$c = Mage::getModel('catalog/product')->getCollection();
foreach($c->getItems() as $key=>$item)
{
    $c->removeItemByKey($key);
}

foreach($c->getItems() as $key=>$item)
{
    var_dump($key);
}

var_dump( "Done" );
Run Code Online (Sandbox Code Playgroud)

结果只输出"完成"一词(Magento 1.6.1).

我猜你安装 Magento的事情是调用$ c-> getItems(); 触发重新加载集合.因此,您删除所有项目,但是当您拨打第二个项目时getItems,将重新获取该集合.


Ana*_*sev 6

类中有清除集合的clear()方法Varien_Data_Collection

我不确定在问问题时是否存在该方法,但是在Magento 1.7中存在