This commit is contained in:
Mateusz 2026-07-01 08:12:08 -04:00 committed by GitHub
commit 36c0b1b7b8
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 44 additions and 1 deletions

View file

@ -6,7 +6,7 @@ sylius_grid:
options:
class: "%sylius.model.order.class%"
repository:
method: createCriteriaAwareSearchListQueryBuilder
method: createCriteriaAwareGridListQueryBuilder
arguments:
criteria: $criteria
sorting:

View file

@ -57,6 +57,42 @@ class OrderRepository extends BaseOrderRepository implements OrderRepositoryInte
;
}
public function createGridListQueryBuilder(): QueryBuilder
{
return $this->createQueryBuilder('o')
->leftJoin('o.customer', 'customer')
->andWhere('o.state != :state')
->setParameter('state', OrderInterface::STATE_CART)
;
}
public function createCriteriaAwareGridListQueryBuilder(?array $criteria): QueryBuilder
{
if ($criteria === null) {
return $this->createGridListQueryBuilder();
}
$hasProductCriteria = '' !== ($criteria['product'] ?? '');
$hasVariantCriteria = '' !== ($criteria['variant'] ?? '');
$queryBuilder = $this->createGridListQueryBuilder();
if ($hasVariantCriteria || $hasProductCriteria) {
$queryBuilder
->leftJoin('o.items', 'item')
->leftJoin('item.variant', 'variant')
;
}
if ($hasProductCriteria) {
$queryBuilder
->leftJoin('variant.product', 'product')
;
}
return $queryBuilder;
}
public function createCriteriaAwareSearchListQueryBuilder(?array $criteria): QueryBuilder
{
if ($criteria === null) {

View file

@ -35,6 +35,13 @@ interface OrderRepositoryInterface extends BaseOrderRepositoryInterface
*/
public function createCriteriaAwareSearchListQueryBuilder(?array $criteria): QueryBuilder;
public function createGridListQueryBuilder(): QueryBuilder;
/**
* @param array<string, mixed>|null $criteria
*/
public function createCriteriaAwareGridListQueryBuilder(?array $criteria): QueryBuilder;
/**
* @param array<string, mixed>|null $criteria
*/