# Manipulation der Funktion checkIfArticleIsInBasket

**URL:** <https://forum.shopware.com/t/manipulation-der-funktion-checkifarticleisinbasket/41499>\
**Category:** Programmierung\
**Created:** [18. November 2016 um 16:12 UTC](https://forum.shopware.com/t/manipulation-der-funktion-checkifarticleisinbasket/41499 "2016-11-18T16:12:12Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![sebbo](https://avatars.discourse-cdn.com/v4/letter/s/45deac/32.png) [@sebbo](https://forum.shopware.com/u/sebbo)\
**Post date:** [18. November 2016 um 16:12 UTC](https://forum.shopware.com/t/manipulation-der-funktion-checkifarticleisinbasket/41499/1 "2016-11-18T16:12:12Z")

</div>

Hallo zusammen,

ich bräuchte wieder mal Hilfe von den Shopware Experten.

&nbsp;

Ich möchte die Funktion manipulieren, die beim Hinzufügen eines Artikels in den Warenkorb, der schon dort liegt, keinen eigenen Eintrag macht, sondern den bestehenden Artikel “aufstockt”.

Das ist&nbsp;checkIfArticleIsInBasket in sBasket. Dort wird ein Query Builder aufgesetzt, den ich über den gesetzten Controller&nbsp;Shopware\_Modules\_Basket\_AddArticle\_CheckBasketForArticle manipulieren kann.

Ich möchte nun eine weitere Bedingung zu diesem Query Builder hinzufügen: Nur wenn das attribute1 des s\_order\_basket Eintrags (in s\_order\_basket\_attributes) einen gewissen Wert hat, soll der Basket Eintrag zurückgegeben werden, ansonsten eben nicht. Ich habe jetzt schon einiges versucht (u.A. das from zu erweitern oder mit leftJoin) aber habe es nicht geschafft, die s\_order\_basket und s\_order\_basket\_attributes vernünftig zu verknüpfen, indem ich den Query Builder nur erweitere.

Hat hier jemand einen Tipp für mich? Der Query Builder macht mir im allgemeinen noch Schwierigkeiten.

&nbsp;

Beste Grüße und ein schönes Wochenende!

---

<div class="post-metadata">

**Author:** ![sebbo](https://avatars.discourse-cdn.com/v4/letter/s/45deac/32.png) [@sebbo](https://forum.shopware.com/u/sebbo)\
**Post date:** [18. November 2016 um 22:03 UTC](https://forum.shopware.com/t/manipulation-der-funktion-checkifarticleisinbasket/41499/2 "2016-11-18T22:03:09Z")

</div>

@SebastianKlöpper‍ ich denke das wäre - ohne unhöflich sein zu wollen -&nbsp;genau deine Frage 😉

---

<div class="post-metadata">

**Author:** ![DanielNogel](https://avatars.discourse-cdn.com/v4/letter/d/96bed5/32.png) [@DanielNogel](https://forum.shopware.com/u/DanielNogel)\
**Post date:** [19. November 2016 um 09:57 UTC](https://forum.shopware.com/t/manipulation-der-funktion-checkifarticleisinbasket/41499/3 "2016-11-19T09:57:05Z")

</div>

Hi,

was genau hast du denn bisher versucht? Das Event ist grundsätzlich erstmal korrekt.&nbsp;[shopware/sBasket.php at 9c393b1218815589b6c05aa41a962fa90b30454a · shopware/shopware · GitHub](https://github.com/shopware/shopware/blob/9c393b1218815589b6c05aa41a962fa90b30454a/engine/Shopware/Core/sBasket.php#L1709)

Von der Idee her, gibt das Ding entweder die ID und Quantity eines bereits im WK befindlichen Artikels zurück, mit dem der aktuelle Artikel zusammengeführt werden kann - oder eben nicht, dann handelt es sich um ein zusätzliches Line Item. Für weitere Hilfe wäre es da einfach hilfreich, wenn du kurz den aktuellen Code zeigst und beschreibst, was das Problem damit ist.

Bestmen Gruß,

Daniel

---

<div class="post-metadata">

**Author:** ![sebbo](https://avatars.discourse-cdn.com/v4/letter/s/45deac/32.png) [@sebbo](https://forum.shopware.com/u/sebbo)\
**Post date:** [19. November 2016 um 12:40 UTC](https://forum.shopware.com/t/manipulation-der-funktion-checkifarticleisinbasket/41499/4 "2016-11-19T12:40:42Z")

</div>

Hallo Daniel,

danke für deine Antwort!

Ja, das habe ich soweit verstanden.

Mir geht es jetzt um die Erweiterung des Querys selbst, das ich ja direkt über den Controller erweitert kann, das klappt auch schon.&nbsp;

Etwas wie&nbsp;

```
$builder->leftJoin('s_order_basket_attributes','attributes')
->andWhere('s_order_basket_attributes.basketID = s_order_basket.id')
->andWhere('s_order_basket_attributes.attribute1 = :attribute1')
->setParameter('attribute1', 'XYZ');

```

hätte ich mir vorgestellt. Ich möchte also, die Bedingung “dar Eintrag muss als Attribut1 XYZ haben” zum Query hinzfügen, nur dann sollen ID und Quantity des Warenkorbeintrags zurückkommen, ansonsten halt nichts.

Das funktioniert so aber leider nicht, was mache ich falsch?&nbsp;

Danke bereits im Voraus & ein schönes Wochenende!

---

<div class="post-metadata">

**Author:** ![DanielNogel](https://avatars.discourse-cdn.com/v4/letter/d/96bed5/32.png) [@DanielNogel](https://forum.shopware.com/u/DanielNogel)\
**Post date:** [19. November 2016 um 13:48 UTC](https://forum.shopware.com/t/manipulation-der-funktion-checkifarticleisinbasket/41499/5 "2016-11-19T13:48:45Z")

</div>

Hi,

“funktioniert nicht” ist aber keine Fehlermeldung - sondern einfach nicht das gewünschte Resultat? Schau dir mal die Doku zu den Join Clauses an, das sieht mir noch nicht korrekt aus:&nbsp;[http://docs.doctrine-project.org/projects/doctrine-dbal/en/latest/reference/query-builder.html#join-clauses](http://docs.doctrine-project.org/projects/doctrine-dbal/en/latest/reference/query-builder.html#join-clauses). leftJoin hat vier Parameter, drei davon verpflichtend:

```
$fromAlias The alias that points to a from clause.
$join The table name to join.
$alias The alias of the join table.
$condition The condition for the join.

```

Besten Gruß,

Daniel

---

<div class="post-metadata">

**Author:** ![cube1893](https://avatars.discourse-cdn.com/v4/letter/c/9f8e36/32.png) [@cube1893](https://forum.shopware.com/u/cube1893)\
**Post date:** [16. Januar 2017 um 13:51 UTC](https://forum.shopware.com/t/manipulation-der-funktion-checkifarticleisinbasket/41499/6 "2017-01-16T13:51:53Z")

</div>

Hallo, falls es noch relevant ist:

```
            $queryBuilder->leftJoin('basket', 's_order_basket_attributes', 'attributes', 'attributes.basketID = basket.id')
                ->andWhere('attributes.attribute1= :attribute1')
                ->select('basket.id', 'quantity')
                ->setParameter('attribute1', 'XYZ'));

```

Die Select-Methode muss erneut aufgerufen werden, damit die id-Spalte, die es in beiden Tabellen gibt, eindeutig ist.&nbsp;  
&nbsp;
