Recarregar coleção

9

Existe alguma chance de recarregar a coleção no Magento 2 ?

Por exemplo:


foreach($items as $singleItems){
    $collection = $this->_myCollection->addFieldToFilter('filed', $singleItems->something);
...
}

Para cada iteração, preciso de uma coleção clara e carregar mais uma vez .

Maciej
fonte

Respostas:

15

Para limpar uma coleção, você pode ligar para:

$this->_myCollection->clear();

Para recarregar uma coleção, você pode ligar para:

$this->_myCollection->load();
Raphael na Digital Pianism
fonte
5
Observe que, loadsem um anterior clear, nada fará se a coleção já estiver carregada.
Fabian Schmengler
1
@fschmengler totalmente você costuma ver ambas as linhas, um após o outro quando uma recarga é necessária
Raphael em Digital pianismo
2
Talvez você deva adicionar um exemplo completo à resposta:foreach($items as $singleItems){ $collection = $this->_myCollection ->clear() ->addFieldToFilter('filed', $singleItems->something) ->load(); }
Siarhey Uchukhlebau
7

Se você aplicou filtros, poderá redefinir a coleção com:

$this->_myCollection->clear()->getSelect()->reset(\Zend_Db_Select::WHERE);

Então :

$this->_myCollection->addFieldToFilter('field', $singleItems->getSomething());
$this->_myCollection->load();
Antoine Martin
fonte
1
Isso é trabalhado como charme. upvoted (Y) Graças :)
Ashish Raj
0

você pode usar a instância CollectionFactory Collection. a classe de fábrica, criando método sempre que criar um objeto novo sem dados recentes

gh darvishani
fonte
sim, mas você não deseja continuar criando objetos especialmente em um loop, a menos que haja um caso em que a classe esteja reutilizando o objeto existente nos bastidores.
NathanielR