[GELÖST] Bestehenden QueryBuilder um eine weitere WHERE-Klausel ergänzen?

Hallo liebe shopware - Gemeinde,

ich würde gerne bei einem bestehenden QueryBuiler eine weitere WHERE-Klausel hinzufügen.

Das Event habe ich schon registriert, nur finde ich keine Information darüber, wie man eine Where-Klausel über ein Event zusätzlich ergänzt (auch nicht in der QueryBuilder.php). Für Select gibt es das ja in Form von $builder->addSelect() und für orderBy mit $builder->addOrderBy(). Ein $builder->addWhere() für meinen Zweck scheint es nicht zu geben?

Mein bisheriger Code ist:

$builder = $arguments->getReturn();
		
$builder->andWhere('');
		
// set new builder
$arguments->setReturn( $builder );

Vielleicht hat ja jemand eine rettende Idee. Oder müsste ich dies über ein (eventuell unnötiges) addSelect lösen, wo ich ein normales ->where() ergänze?

Beste Grüße

Sebastian

Hi,

auf  welches Event hast du dich registriert? Gibt es eine Fehlermeldung? “andWhere” sowie “orWhere” sind möglich und werden von uns im Core auch oft genutzt. Grundsätzlich ist es also schon möglich - vermute den Fehler daher an einer anderen Stelle.

Daniel

@Daniel Nögel schrieb:

Hi,

auf  welches Event hast du dich registriert? Gibt es eine Fehlermeldung? „andWhere“ sowie „orWhere“ sind möglich und werden von uns im Core auch oft genutzt. Grundsätzlich ist es also schon möglich - vermute den Fehler daher an einer anderen Stelle.

Daniel

Hallo Daniel,

danke für die schnelle Antwort. Es geht um das Event Shopware_Modules_Basket_AddArticle_CheckBasketForArticle, wo ich dem QueryBuider gern noch eine weiter Where-Klausel hinzufügen würde.

Beste Grüße

Sebastian

Hi,

achso, dazu brauchst du nur "$args->get(‘queryBuilder’). Dann bekommst du die Instanz vom \Doctrine\DBAL\Query\QueryBuilder (das ist noch etwas anderes als der ORM-Querybuilder, andWhere gibt es da aber auch). Darauf kannst du am besten in deinem Plugin einen Typehint setzen, dann hast du auch Autocomplesion in PHPStorm.

Die Variante, die du versucht hast, kommt vermutlich von den after-Hooks auf Repository-Methoden, da wird das über getReturn() gemacht, weil der Querybilder dort ja die Rückgabe der Methode ist. 

Besten Gruß,

Daniel

1 „Gefällt mir“

@Daniel Nögel schrieb:

Hi,

achso, dazu brauchst du nur "$args->get(‚queryBuilder‘). Dann bekommst du die Instanz vom \Doctrine\DBAL\Query\QueryBuilder (das ist noch etwas anderes als der ORM-Querybuilder, andWhere gibt es da aber auch). Darauf kannst du am besten in deinem Plugin einen Typehint setzen, dann hast du auch Autocomplesion in PHPStorm.

Die Variante, die du versucht hast, kommt vermutlich von den after-Hooks auf Repository-Methoden, da wird das über getReturn() gemacht, weil der Querybilder dort ja die Rückgabe der Methode ist. 

Besten Gruß,

Daniel

Hallo Daniel,

wie sollte es natürlich auch anders sein - du hast natürlich (doppelt) recht gehabt, mit $args->get(‚queryBuilder‘)  funktioniert es Grin. Kommt man evtl. über $args->get(‚queryBuilder‘)->articleId auch an die Artikel-ID ran?

Beste Grüße

Sebastian

 

Hi,

        $builder->getParameter('articleId')
        $builder->getParameter('ordernumber')

wenn ich das richtig sehe, müsste das wie hier gezeigt gehen.

Daniel

1 „Gefällt mir“