Backendbestellung Artikelsuche erweitern

Hey Zusammen,

ich versuche gerade das Backendbestellungsplugin GitHub - shopwareLabs/SwagBackendOrder: plugin which allows you to create orders via backend module mal wieder etwas anzupassen. Ich möchte die Suche erweitern um die Möglichkeit auch nachdem Hersteller zu suchen. 
Hierfür habe ich den getProductQueryBuilder etwas angepasst. Und einen weiteren Join auf den Hersteller mitaufgenommen.

 /**
     * @param string $search
     * @param string $groupKey
     * @return \Doctrine\ORM\QueryBuilder|\Shopware\Components\Model\QueryBuilder
     */
    public function getProductQueryBuilder($search, $groupKey = 'EK')
    {
        $builder = $this->modelManager->createQueryBuilder();
        /**
         * query to search for article variants or the article ordernumber
         * the query concats the article name and the additional text field for the search
         */
        $builder->select(
            'articles.id AS articleId,
            details.number,
            articles.name,
            details.id,
            details.inStock,
            articles.taxId,
            prices.price,
            details.additionalText,
            tax.tax,
            articles.supplierId,
            sp.id'
        );

        $builder->from(Article::class, 'articles')
                ->leftJoin('articles.details', 'details')
                ->leftJoin('details.prices', 'prices')
                ->leftJoin('articles.tax', 'tax')
                ->leftJoin(
                    Supplier::class,
                    'sp',
                    Expr\Join::WITH,
                    'articles.supplierId = sp.id'
                )
                ->where(
                    $builder->expr()->like(
                        $builder->expr()->concat(
                            'articles.name',
                            $builder->expr()->concat(
                                $builder->expr()->literal(' '),
                                'details.additionalText'
                            )
                        ),
                        $builder->expr()->literal($search)
                    )
                )
                ->orWhere('details.number LIKE :number')
                ->orWhere('sp.name LIKE :number')
                ->andWhere('articles.active = 1')
                ->andWhere('prices.customerGroupKey = :groupkey')
                ->setParameter('number', $search)
                ->setParameter('groupkey', $groupKey)
                ->orderBy('details.number')
                ->groupBy('details.number')
                ->setMaxResults(20);

        //Log the current query
        Shopware()->PluginLogger()->info($builder->getQuery()->getSQL());

        return $builder;
    }

Laut Logging klappt das auch meine Query enthält alle erwarteten Elemente. 

Dennoch zeigt mir die SearchBox wesentlich weniger Elemente an. Ich finde aktuell keine Möglichkeit herauszufinden, in welcher JS das Eindampfen der Liste stattfindet. Hier bekomme ich nämlich nur 2 Elemente angezeigt.

Hat hier eventuell jemand eine Idee für mich? 

Liebe Grüße

Kevin

Hey nochmals,

so habe das Problem nun lösen können. Mal wieder selbst Schuld gewesen. 

Mein Select im getProductQueryBuilder war nicht korrekt, sodass im Result-Objekt identische ID´s für die Artikel vergeben wurde und er diese automatisiert in der Search-Komponente herausfilter. 

Mein Select vorher: 

        $builder->select(
            'articles.id AS articleId,
            details.number,
            articles.name,
            details.id,
            details.inStock,
            articles.taxId,
            prices.price,
            details.additionalText,
            tax.tax,
            articles.supplierId,
            sp.id'
        );

Der letzte Part sp.id war hier ausschlaggebend. Habe das angepasst auf nachfolgendes Select und nun kommen die entsprechenden Werte.

        $builder->select(
            'articles.id AS articleId,
            details.number,
            articles.name,
            details.id,
            details.inStock,
            articles.taxId,
            prices.price,
            details.additionalText,
            tax.tax,
            articles.supplierId,
            sp.id as supplierID'
        );

Schönen Abend euch und liebe Grüße

Kevin