Существует также возможность удалить все элементы без «поддельной загрузки» (в противоположность ответу Шей Акрич):
class MyCollection extends SomeCollection {
// ...
public function setEmpty()
{
$this->clear();
$this->_totalRecords = 0;
$this->_setIsLoaded(true);
return $this;
}
// ...
}
Требуется установка _totalRecords
в 0
, чтобы не допуститьgetSize()
метод для перезагрузки коллекции.
Тем не менее, необходимо расширить / изменить код коллекции, поскольку защищено как поле _totalRecords
, так и метод _setIsLoaded()
.
ТамСледует отметить, что если конкретная коллекция игнорирует флаги, такие как _totalRecords
и _isCollectionLoaded
, приведенное выше решение может работать не так, как ожидалось.