Как удалить данные, используя коллекцию в magento ORM? - PullRequest
14 голосов
/ 30 марта 2011

Сейчас я удаляю данные типа

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

Есть ли способ удалить данные с помощью коллекции, как:

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

Большое спасибо,

Балан

Ответы [ 4 ]

23 голосов
/ 30 марта 2011

Удобной функции удаления группы нет, поэтому либо добавьте ее в свою коллекцию, либо просто сделайте это напрямую.

foreach ($rcc as $ccitem) {
    $ccitem->delete();
}
4 голосов
/ 02 февраля 2012

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 голосов
/ 19 октября 2011

Чтобы реализовать функцию удаления в коллекции, необходимо добавить новый метод в класс коллекции или пользовательский абстрактный класс, от которого наследуется коллекция.

Пример:

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

    return $this;
}
1 голос
/ 31 июля 2012

Благодаря @leek, я начал работать:

foreach( $collection as $item )
    if( <<logic>> ) $collection->getEntity()->delete( $item );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...