for testing and deploying your application
for finding and fixing issues
for empowering human code reviews
<?php
/*
* This file has been created by developers from BitBag.
* Feel free to contact us once you face any issues or want to start
* another great project.
* You can find more information about us on https://bitbag.shop and write us
* an email on [email protected].
*/
declare(strict_types=1);
namespace BitBag\SyliusCmsPlugin\Repository;
use Doctrine\ORM\QueryBuilder;
use Sylius\Bundle\ProductBundle\Doctrine\ORM\ProductRepository as BaseProductRepository;
class ProductRepository extends BaseProductRepository implements ProductRepositoryInterface
{
/**
* {@inheritdoc}
public function findByNamePart(string $phrase, ?string $locale = null): array
return $this->createTranslationBasedQueryBuilder($locale)
->andWhere('translation.name LIKE :name')
->setParameter('name', '%' . $phrase . '%')
->getQuery()
->getResult()
;
}
* @param $locale
*
* @return QueryBuilder
private function createTranslationBasedQueryBuilder($locale): QueryBuilder
$queryBuilder = $this->createQueryBuilder('o')
->addSelect('translation')
->leftJoin('o.translations', 'translation')
if (null !== $locale) {
$queryBuilder
->andWhere('translation.locale = :locale')
->setParameter('locale', $locale)
return $queryBuilder;