sql query für varianten bilder

Die Shopware-Core Dateien sind hier immer ein gutes Nachschlagwerk wenn es die Dokumentation nicht hergibt.

In der Datei engine/Shopware/Models/Article/Repository.php (über engine/Shopware/Core/sArticles.php in sGetArticlePictures()) gefunden) gibt es die Funktion getVariantImagesByArticleNumberQueryBuilder() die nahe an deiner Anforderung sein sollte da man alle Joins sieht die gemacht werden. Kannst dir die Query loggen, selber das SQL nachbauen oder meinen Vorschlag unten mit dem Profiler wählen.

    /**
     * Helper function to create the query builder for the "getVariantImagesByArticleNumberQuery" function.
     * This function can be hooked to modify the query builder of the query object.
     *
     * @param $number
     *
     * @return \Doctrine\ORM\QueryBuilder
     */
    public function getVariantImagesByArticleNumberQueryBuilder($number)
    {
        $builder = $this->getEntityManager()->createQueryBuilder();

        $builder->select([
            'imageParent.id',
            'imageParent.articleId',
            'imageParent.articleDetailId',
            'imageParent.description',
            'imageParent.path',
            'imageParent.main',
            'imageParent.position',
            'imageParent.width',
            'imageParent.height',
            'imageParent.extension',
            'imageParent.parentId',
            'attribute.attribute1',
            'attribute.attribute2',
            'attribute.attribute3',
        ])
            ->from('Shopware\Models\Article\Image', 'images')
            ->innerJoin('images.articleDetail', 'articleDetail')
            ->innerJoin('images.parent', 'imageParent')
            ->leftJoin('imageParent.attribute', 'attribute')
            ->where('articleDetail.number = ?1')
            ->setParameter(1, $number)
            ->orderBy('imageParent.main', 'ASC')
            ->addOrderBy('imageParent.position', 'ASC');

        return $builder;
    }

Alternativ dazu könntest du dir auch das Profiler-Plugin installieren da dort in der Debug-Toolbar - wenn ich mich nicht täusche - alle SQL’s in Reinform (wie diese abgesetzt wurden) angezeigt werden.

1 „Gefällt mir“