如何使用magento ORM中的集合删除数据?

时间:2011-03-30 12:38:23

标签: magento

现在我正在删除

等数据
  $deleteCCL = Mage::getModel('crossdata/customccitem');
  $deleteCCL->load($itemId);
  $deleteCCL->delete();

有没有办法使用以下集合删除数据:

$rcc = Mage::getModel('crossdata/customccitem')->getCollection()->delete();

非常感谢,

巴兰

5 个答案:

答案 0 :(得分:23)

没有方便的群组删除功能,因此要么将其添加到您的收藏中,要么只是直接进行。

foreach ($rcc as $ccitem) {
    $ccitem->delete();
}

答案 1 :(得分:4)

Mage_Eav_Model_Entity_Collection_Abstract(扩展Varien_Data_Collection_Db)如果您有能力扩展它,则会为集合提供delete()方法。

但是,它的实现与你的实现基本相同:

/**
 * Delete all the entities in the collection
 *
 * @todo make batch delete directly from collection
 */
public function delete()
{
    foreach ($this->getItems() as $k=>$item) {
        $this->getEntity()->delete($item);
        unset($this->_items[$k]);
    }
    return $this;
}

答案 2 :(得分:2)

要在集合中实现删除功能,您必须向集合类或集合继承的自定义抽象类添加新方法。

示例:

public function delete()
{
    foreach ($this->getItems() as $key => $item) {
        $item->delete();
        unset($this->_items[$key]);
    }

    return $this;
}

答案 3 :(得分:1)

感谢@leek,我得到了我的工作:

foreach( $collection as $item )
    if( <<logic>> ) $collection->getEntity()->delete( $item );

答案 4 :(得分:0)

可以使用集合遍历功能

Mage::getModel('crossdata/customccitem')->getCollection()->walk('delete');

或每个函数

Mage::getModel('crossdata/customccitem')->getCollection()->each('delete')->clear();