Sammlung neu laden

9

Gibt es eine Möglichkeit, die Sammlung in Magento 2 neu zu laden ?

Zum Beispiel:


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

Für jede Iteration brauche ich eine eindeutige Sammlung und lade noch einmal .

Maciej
quelle

Antworten:

15

Um eine Sammlung zu löschen, können Sie Folgendes aufrufen:

$this->_myCollection->clear();

Um eine Sammlung neu zu laden, können Sie Folgendes aufrufen:

$this->_myCollection->load();
Raphael beim digitalen Pianismus
quelle
5
Beachten Sie, dass loadohne vorherige clearnichts, wenn die Sammlung bereits geladen wurde.
Fabian Schmengler
1
@fschmengler total Sie sehen normalerweise beide Zeilen nacheinander, wenn ein Nachladen erforderlich ist
Raphael bei Digital Pianism
2
Vielleicht sollten Sie der Antwort ein vollständiges Beispiel hinzufügen:foreach($items as $singleItems){ $collection = $this->_myCollection ->clear() ->addFieldToFilter('filed', $singleItems->something) ->load(); }
Siarhey Uchukhlebau
7

Wenn Sie Filter angewendet haben, können Sie die Sammlung zurücksetzen mit:

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

Dann :

$this->_myCollection->addFieldToFilter('field', $singleItems->getSomething());
$this->_myCollection->load();
Antoine Martin
quelle
1
Dies wird wie Charme gearbeitet. upvoted (Y) Danke :)
Ashish Raj
0

Sie können die CollectionFactory-Instanz Collection verwenden. Die Factory-Klasse erstellt jedes Mal eine Methode, wenn ein neues Objekt ohne aktuelle Daten erstellt wird

gh darvishani
quelle
Ja, aber Sie möchten keine Objekte speziell in einer Schleife erstellen, es sei denn, die Klasse verwendet das vorhandene Objekt hinter den Kulissen erneut.
NathanielR