selectString und QueryBuilder

Hi,

ich schreibe gerade ein Modul um für eine Artikelliste. Früher habe ich dazu einen SQL String aufgebaut und den an selectString() übergeben.

Da der DatabaseProvider ja deprecated ist, dachte ich mir das müsste ja auch mit dem QueryBuilder gehen. Hat da jemand schon was gemacht in die Richtung?

Liebe Grüße
Ralf

in der offiziellen Doku gibts da was:
https://docs.oxid-esales.com/developer/en/6.2/development/modules_components_themes/module/using_database.html#making-a-query

wenn das Modul mit Shops < 6.2 funktionieren soll:

private function getQuerybulder() {
$sShopVersion = \OxidEsales\Eshop\Core\ShopVersion::getVersion();

if ( version_compare($sShopVersion,"6.2.0") < 0) // < 6.2
{
    return $queryBuilder = ContainerFactory::getInstance()->getContainer()
                ->get(\OxidEsales\EshopCommunity\Internal\Common\Database\QueryBuilderFactoryInterface::class)
                ->create();
} else { // >= 6.2
    return $queryBuilder = ContainerFactory::getInstance()->getContainer()
                ->get(\OxidEsales\EshopCommunity\Internal\Framework\Database\QueryBuilderFactoryInterface::class)
                ->create();
}
}

Ist ein 6.4 Shop EE. So ähnlich hab ich das, aber wie übergebe ich das an die oxArticleList->selectString()?

Du kannst den Query und dessen Parameter aus dem QueryBuilder exportieren:

$queryBuilder->getSql() und $queryBuilder->getParameters()

Das sind die beiden Werte, die die selectString-Methode braucht.

Der QueryBuilder kann den Query auch selbst ausführen (execute()) und daraus das Result abfragen (fetch*()). Wie das Result dann am effektivsten in eine Artikelliste kommt, muss ich offline aber leider gerade passen.

1 Like