[GELÖST] Warenkorbartikel-Abfrage um eigenes Feld erweitern?

Hallo liebe Shopware - Gemeinde,

ich würde gerne die Warenkorb-Abfrage um ein eigenes Feld erweitern. Mein Ansatz ist: in der Datei sBasket.php gibt es ja die Funktion loadBasketArticles(), die die Abfrage bereitstellt. Ich würde nun mit dem Event Shopware_Modules_Basket_GetBasket_FilterSQL die Abfrage um mein eigenes Feld erweitern.

Den Return des Events würde ich mir über $result = $args->getReturn(); holen, den Return setzen wieder über $args->setReturn($result); . Nur komme ich derzeit beim Erweitern der SQL-Abfrage nicht weiter. Mit addSelect (http://community.shopware.com/Schuhgrößen-Erweiterung_detail_1052.html) funktioniert es leider nicht:

$result->addSelect(array(
     'attributes.swagCustomerPreferencesSize',
     'attributes.swagCustomerPreferencesColor'
));

Hat jemand einen Tipp, wie ich die SQL-Abfrage erweitern könnte?

Beste Grüße

Sebastian

Na aber das ist doch kein Query-Objekt sonder plain sql.

Da müsste man eher sowas machen:

//get the sql-statement
$sql = $args->getReturn();

//create a new snippet at point ob_attr6 containing the point and the added attribute 
$newSql = 'ob_attr6, s_order_basket_attributes.swagCustomerPreferencesSize, s_order_basket_attributes.swagCustomerPreferencesColor';

//replace the text in the sql-statement with the newly created one
$sql = str_replace('ob_attr6', $newSql, $sql);

//set the sql-statement
$args->setReturn($sql);

 

2 Likes

@steinsoftware schrieb:

Na aber das ist doch kein Query-Objekt sonder plain sql.

Da müsste man eher sowas machen:

//get the sql-statement
$sql = $args->getReturn();

//create a new snippet at point ob_attr6 containing the point and the added attribute
$newSql = ‚ob_attr6, s_order_basket_attributes.swagCustomerPreferencesSize, s_order_basket_attributes.swagCustomerPreferencesColor‘;

//replace the text in the sql-statement with the newly created one
$sql = str_replace(‚ob_attr6‘, $newSql, $sql);

//set the sql-statement
$args->setReturn($sql);

Hallo steinsoftware,

das fällt dann wohl unter die Kategorie: „einfach zu kompliziert gedacht“ Grin. Ich danke dir, funktioniert wie gewünscht Halo.

Beste Grüße

Sebastian

Moin Sebastian,

ich versuche gerade, ebenfalls wie du, eigene Felder der Tabelle s_order_basket_attributes im Warenkorb anzuzeigen. Kannst du mir einen Tipp geben, wie ich den Event Shopware_Modules_Basket_GetBasket_FilterSQL erweitern kann?

Danke und beste GRüße

Kafke

@kafke schrieb:

Mon Sebastian,

ich versuche gerade, ebenfalls wie du, eigene Felder der Tabelle s_order_basket_attributes im Warenkorb anzuzeigen. Kannst du mir einen Tipp geben, wie ich den Event Shopware_Modules_Basket_GetBasket_FilterSQL erweitern kann?

Danke und beste GRüße

Kafke

Hallo,

die komplette Lösung hat doch aber steinsoftware geschrieben?

Beste Grüße

Sebastian

1 Like

Hi Sebastian,

mir ist nicht ganz klar wie ich mich an den Event Shopware_Modules_Basket_GetBasket_FilterSQL ranhänge.

Ich hab’s mit der folgenden Code-Zeile probiert. 

$this->subscribeEvent('Shopware_Modules_Basket_GetBasket_FilterSQL', 'onGetBasket');

Die Methode onGetBasket ()  wird aber nicht ausgeführt.

Ich würd mich freuen, wenn du mir einen Tipp geben kannst.

Viele Grüße,

Kafke

@kafke schrieb:

Hi Sebastian,

mir ist nicht ganz klar wie ich mich an den Event Shopware_Modules_Basket_GetBasket_FilterSQL ranhänge.

Ich hab’s mit der folgenden Code-Zeile probiert. 

$this->subscribeEvent(‚Shopware_Modules_Basket_GetBasket_FilterSQL‘, ‚onGetBasket‘);

Die Methode onGetBasket ()  wird aber nicht ausgeführt.

Ich würd mich freuen, wenn du mir einen Tipp geben kannst.

Viele Grüße,

Kafke

Hallo,

genauso ist es aber richtig und funktioniert (bei mir) auch tadellos.

Beste Grüße

Sebastian

1 Like

Hallo Sebastian,

ich hatte das falsche Plugin neu installiert. Deshalb hab ich kein Erfolg gesehen… Ist mir jetzt irgendwie n bisschen Peinlich :confused:

Dank deiner Bestätigung hab ich aufgehört den Fehler in meinem Code zu suchen…

Viele Grüße,

Kafke