2 Stimmen

Wie entfernt man Attribute, die mit "->addAttributeToFilter()" hinzugefügt wurden, aus einer Sammlung in Magento

Betrachten Sie den folgenden Code:

$productCollection123 = Mage::getModel('catalog/product')->getCollection()
    ->addStoreFilter(Mage::app()->getStore())
    ->addAttributeToFilter('type_id', array('eq' => 'simple'))
    ->addAttributeToFilter('color',5);

Die resultierende Zahl ist also count($productCollection123) = 57 ist es nun möglich, eine removeAttributeFromFilter so dass die Bedingung aufgehoben wird 'color'=5 aus dem aktuellen Sammelergebnis?

Nota: sie sollte die Bedingung nicht entfernen 'type_id'='simple'

3voto

Max Punkte 8501

Nein, Sie müssen eine neue Abfrage erstellen. Sobald Sie die DB mit einer Abfrage mit Bedingungen treffen, können Sie nicht einfach eine Bedingung entfernen und haben neue Daten, müssen Sie eine neue Abfrage zu konstruieren.

1voto

Jürgen Thelen Punkte 12505

Afaik Standard Magento hat keine Methoden zum expliziten Entfernen von Filtern (außer clear() , wodurch alle Filter zurückgesetzt und die Sammlung entladen wird).

Und um ehrlich zu sein, macht es nicht viel Sinn, Filter zu entfernen, nachdem eine Sammlung bereits geladen wurde. Zumindest für mich.

Das Einzige, was mir einfällt, wäre, eine Sammlung mit den minimalen Filtern zu erstellen (Ihre 2.), dann clone und erweitern Sie den Klon mit den maximalen Filtern (Ihrem 1.).

Dies würde zwar einige Codezeilen einsparen, aber es mangelt an Lesbarkeit und Wartungsfreundlichkeit.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X