mirror of
https://github.com/Sylius/Sylius.git
synced 2026-07-05 20:57:12 +00:00
Remove eager customer JOIN from admin order grid query
This commit is contained in:
parent
f8a27841f2
commit
7656d632fb
3 changed files with 43 additions and 1 deletions
|
|
@ -6,7 +6,7 @@ sylius_grid:
|
|||
options:
|
||||
class: "%sylius.model.order.class%"
|
||||
repository:
|
||||
method: createCriteriaAwareSearchListQueryBuilder
|
||||
method: createCriteriaAwareGridListQueryBuilder
|
||||
arguments:
|
||||
criteria: $criteria
|
||||
sorting:
|
||||
|
|
|
|||
|
|
@ -57,6 +57,41 @@ class OrderRepository extends BaseOrderRepository implements OrderRepositoryInte
|
|||
;
|
||||
}
|
||||
|
||||
public function createGridListQueryBuilder(): QueryBuilder
|
||||
{
|
||||
return $this->createQueryBuilder('o')
|
||||
->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) {
|
||||
|
|
|
|||
|
|
@ -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
|
||||
*/
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue