Hallo liebe Shopware-Gemeinde,
ich bin auf ein ziemlich nerviges Problem gestoßen. Und zwar hänge ich mich an das ‚Shopware_SearchBundle_Create_Listing_Criteria‘ Event um eine Condition via Criteria hinzuzufügen die das Artikelattribut ‚subshop_active‘ abfragt und nur die Ergebnisse anzeigt bei denen das Attribut auf 1 gesetzt ist. Der Code dafür sieht folgendermaßen aus:
public function listingFilter(Arguments $args) { $criteria = $args-\>get('criteria'); $criteria-\>addCondition( new ProductAttributeCondition('subshop\_active',ProductAttributeCondition::OPERATOR\_EQ,1) ); }
Die Funktion funktioniert auch in der Theorie, zumindest dann wenn ich nicht das oben genannte Feld abfrage sondern eines der von Shopware vorgegeben Freitextfelder (attr1…). Beispiel:
new ProductAttributeCondition('attr10',ProductAttributeCondition::OPERATOR\_EQ,'schwarz')
funktioniert und gibt das korrekt gefilterte Listing aus.
In dem Zusammenhang ist mir aufgefallen dass das für alle unsere custom Felder gilt: Keines davon kann ich mit dieser Condition richtig abfragen. Interessanterweise werden mir alle Artikel, unabhängig davon was sie in der db für einen Wert bei dem genannten ‚subshop_active‘ Feld haben angezeigt wenn ich statt nach der 1 in der Condition nach 0 Abfrage.
Das Feld selbst wurde mit folgendem Code angelegt:
$attributeCrudService-\>update( 's\_articles\_attributes', 'subshop\_active', TypeMapping::TYPE\_BOOLEAN, ['label' =\> 'Aktiv in Subshops', 'custom' =\> false, 'displayInBackend' =\> true, 'defaultValue' =\> 1, 'translatable' =\> true], null, false, 1);
Über Ideen woran es liegen könnte würde ich mich freuen!