Quantcast
Channel: Programmierung - Shopware Community Forum
Viewing all articles
Browse latest Browse all 2871

Backendbestellung Artikelsuche erweitern

$
0
0

Hey Zusammen,

ich versuche gerade das Backendbestellungsplugin https://github.com/shopwareLabs/SwagBackendOrder 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


Viewing all articles
Browse latest Browse all 2871

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>