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 .

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();

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();

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


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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.