2011-03-30 12 views
12

de datos en este momento estoy como la supresión de¿Cómo borro datos usando la colección en magento ORM?

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

¿Hay alguna manera de eliminar datos utilizando colección como:

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

?

Muchas gracias,

Balan

Respuesta

21

No hay un grupo de práctica función de borrar así que o añadirlo a su colección o simplemente hacerlo directamente.

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

Ya gracias .. lo estoy haciendo de esta manera. .. – balanv

+0

Esto funcionó para mí también, ¡tan simple cuando sabes cómo! – jsims281

+0

Pero esto eliminaría cada uno individualmente. ¿No desearíamos poder canalizar un SQL de una colección arbitraria en un DELETE para que podamos eliminarlos todos de una sola vez? – kalenjordan

1

Para implementar la funcionalidad de eliminación en mis colecciones, agregaría la siguiente función a mi colección/Abstract.php personalizada.

public function delete() 
{ 
    foreach ($this as $object) { 
     $object->delete(); 
    } 
} 
4

Mage_Eav_Model_Entity_Collection_Abstract (que se extiende Varien_Data_Collection_Db) proporciona un método para delete() colecciones si tiene la posibilidad de extenderla.

Sin embargo, su implementación es básicamente el mismo que el suyo:

/** 
* 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; 
} 
+0

amo el '@ todo' en el docblock! :) –

1

Gracias a @leek, yo tengo la mía de trabajo:

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