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 .

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

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

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


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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.