Skip to content

Commit 756ec75

Browse files
filterByXXXX use generic filterBy method
1 parent f997594 commit 756ec75

4 files changed

Lines changed: 115 additions & 134 deletions

File tree

src/Resources/views/Generator/ColumnTemplate.html.twig

Lines changed: 10 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,20 @@
11

22
public static function filterBy{{ column }}(
33
QueryBuilder $qb,
4-
$value,
4+
mixed $value,
55
$operator = Comparison::EQ,
66
$entityName = self::NAME,
77
$columnName = '{{ columnDql }}',
8+
string $columnNamePrefix = '',
9+
string $columnNameSuffix = '',
810
): QueryBuilder {
9-
if ($value === null) {
10-
if (Comparison::NEQ === $operator) {
11-
$qb->andWhere($entityName.'.'.$columnName.' IS NOT NULL');
12-
} else {
13-
$qb->andWhere($entityName.'.'.$columnName.' IS NULL');
14-
}
15-
} else {
16-
//get a uniq index
17-
$index = static::getParameterIndex();
18-
$parameterName = $columnName.$index;
19-
20-
$qb->andWhere($entityName.'.'.$columnName.$operator.':'.$parameterName);
21-
$qb->setParameter($parameterName, $value);
22-
}
23-
24-
return $qb;
11+
return self::filterBy(
12+
qb: $qb,
13+
columnName: $columnName,
14+
operator: $operator,
15+
value: $value,
16+
entityName: $entityName,
17+
);
2518
}
2619

2720
public static function filterIn{{ column }}(

src/Resources/views/Generator/TopRepositoryTemplate.html.twig

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -332,18 +332,28 @@ class {{ entityClassname }}Base extends {{ extendClass }}{% if useInterfaces %}
332332
QueryBuilder $qb,
333333
string $columnName,
334334
string $operator,
335-
string $value,
335+
mixed $value,
336336
?string $entityName = null,
337+
string $columnNamePrefix = '',
338+
string $columnNameSuffix = '',
337339
): QueryBuilder {
338340
if (null === $entityName) {
339341
$entityName = self::NAME;
340342
}
341343
342-
$index = static::getParameterIndex();
343-
$parameterName = $columnName.$index;
344+
if ($value === null) {
345+
if (Comparison::NEQ === $operator) {
346+
$qb->andWhere($entityName.'.'.$columnName.' IS NOT NULL');
347+
} else {
348+
$qb->andWhere($entityName.'.'.$columnName.' IS NULL');
349+
}
350+
} else {
351+
$index = static::getParameterIndex();
352+
$parameterName = $columnName.$index;
344353
345-
$qb->andWhere($entityName.'.'.$columnName.' '.$operator.' :'.$parameterName);
346-
$qb->setParameter($parameterName, $value);
354+
$qb->andWhere($columnNamePrefix.$entityName.'.'.$columnName.' '.$columnNameSuffix.' '.$operator.' :'.$parameterName);
355+
$qb->setParameter($parameterName, $value);
356+
}
347357
348358
return $qb;
349359
}

tests/Repository/MyClassRepositoryBase.php

Lines changed: 45 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -314,18 +314,28 @@ public static function filterBy(
314314
QueryBuilder $qb,
315315
string $columnName,
316316
string $operator,
317-
string $value,
317+
mixed $value,
318318
?string $entityName = null,
319+
string $columnNamePrefix = '',
320+
string $columnNameSuffix = '',
319321
): QueryBuilder {
320322
if (null === $entityName) {
321323
$entityName = self::NAME;
322324
}
323325

324-
$index = static::getParameterIndex();
325-
$parameterName = $columnName.$index;
326+
if ($value === null) {
327+
if (Comparison::NEQ === $operator) {
328+
$qb->andWhere($entityName.'.'.$columnName.' IS NOT NULL');
329+
} else {
330+
$qb->andWhere($entityName.'.'.$columnName.' IS NULL');
331+
}
332+
} else {
333+
$index = static::getParameterIndex();
334+
$parameterName = $columnName.$index;
326335

327-
$qb->andWhere($entityName.'.'.$columnName.' '.$operator.' :'.$parameterName);
328-
$qb->setParameter($parameterName, $value);
336+
$qb->andWhere($columnNamePrefix.$entityName.'.'.$columnName.' '.$columnNameSuffix.' '.$operator.' :'.$parameterName);
337+
$qb->setParameter($parameterName, $value);
338+
}
329339

330340
return $qb;
331341
}
@@ -352,27 +362,20 @@ public static function filterIn(
352362

353363
public static function filterById(
354364
QueryBuilder $qb,
355-
$value,
365+
mixed $value,
356366
$operator = Comparison::EQ,
357367
$entityName = self::NAME,
358368
$columnName = 'id',
369+
string $columnNamePrefix = '',
370+
string $columnNameSuffix = '',
359371
): QueryBuilder {
360-
if ($value === null) {
361-
if (Comparison::NEQ === $operator) {
362-
$qb->andWhere($entityName.'.'.$columnName.' IS NOT NULL');
363-
} else {
364-
$qb->andWhere($entityName.'.'.$columnName.' IS NULL');
365-
}
366-
} else {
367-
//get a uniq index
368-
$index = static::getParameterIndex();
369-
$parameterName = $columnName.$index;
370-
371-
$qb->andWhere($entityName.'.'.$columnName.$operator.':'.$parameterName);
372-
$qb->setParameter($parameterName, $value);
373-
}
374-
375-
return $qb;
372+
return self::filterBy(
373+
qb: $qb,
374+
columnName: $columnName,
375+
operator: $operator,
376+
value: $value,
377+
entityName: $entityName,
378+
);
376379
}
377380

378381
public static function filterInId(
@@ -504,27 +507,20 @@ public function deleteById(
504507

505508
public static function filterByNumber(
506509
QueryBuilder $qb,
507-
$value,
510+
mixed $value,
508511
$operator = Comparison::EQ,
509512
$entityName = self::NAME,
510513
$columnName = 'number',
514+
string $columnNamePrefix = '',
515+
string $columnNameSuffix = '',
511516
): QueryBuilder {
512-
if ($value === null) {
513-
if (Comparison::NEQ === $operator) {
514-
$qb->andWhere($entityName.'.'.$columnName.' IS NOT NULL');
515-
} else {
516-
$qb->andWhere($entityName.'.'.$columnName.' IS NULL');
517-
}
518-
} else {
519-
//get a uniq index
520-
$index = static::getParameterIndex();
521-
$parameterName = $columnName.$index;
522-
523-
$qb->andWhere($entityName.'.'.$columnName.$operator.':'.$parameterName);
524-
$qb->setParameter($parameterName, $value);
525-
}
526-
527-
return $qb;
517+
return self::filterBy(
518+
qb: $qb,
519+
columnName: $columnName,
520+
operator: $operator,
521+
value: $value,
522+
entityName: $entityName,
523+
);
528524
}
529525

530526
public static function filterInNumber(
@@ -656,27 +652,20 @@ public function deleteByNumber(
656652

657653
public static function filterByName(
658654
QueryBuilder $qb,
659-
$value,
655+
mixed $value,
660656
$operator = Comparison::EQ,
661657
$entityName = self::NAME,
662658
$columnName = 'name',
659+
string $columnNamePrefix = '',
660+
string $columnNameSuffix = '',
663661
): QueryBuilder {
664-
if ($value === null) {
665-
if (Comparison::NEQ === $operator) {
666-
$qb->andWhere($entityName.'.'.$columnName.' IS NOT NULL');
667-
} else {
668-
$qb->andWhere($entityName.'.'.$columnName.' IS NULL');
669-
}
670-
} else {
671-
//get a uniq index
672-
$index = static::getParameterIndex();
673-
$parameterName = $columnName.$index;
674-
675-
$qb->andWhere($entityName.'.'.$columnName.$operator.':'.$parameterName);
676-
$qb->setParameter($parameterName, $value);
677-
}
678-
679-
return $qb;
662+
return self::filterBy(
663+
qb: $qb,
664+
columnName: $columnName,
665+
operator: $operator,
666+
value: $value,
667+
entityName: $entityName,
668+
);
680669
}
681670

682671
public static function filterInName(

tests/Service/ExpectedMyClassRepositoryBase.txt

Lines changed: 45 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -314,18 +314,28 @@ class MyClassRepositoryBase extends \Doctrine\Bundle\DoctrineBundle\Repository\S
314314
QueryBuilder $qb,
315315
string $columnName,
316316
string $operator,
317-
string $value,
317+
mixed $value,
318318
?string $entityName = null,
319+
string $columnNamePrefix = '',
320+
string $columnNameSuffix = '',
319321
): QueryBuilder {
320322
if (null === $entityName) {
321323
$entityName = self::NAME;
322324
}
323325

324-
$index = static::getParameterIndex();
325-
$parameterName = $columnName.$index;
326+
if ($value === null) {
327+
if (Comparison::NEQ === $operator) {
328+
$qb->andWhere($entityName.'.'.$columnName.' IS NOT NULL');
329+
} else {
330+
$qb->andWhere($entityName.'.'.$columnName.' IS NULL');
331+
}
332+
} else {
333+
$index = static::getParameterIndex();
334+
$parameterName = $columnName.$index;
326335

327-
$qb->andWhere($entityName.'.'.$columnName.' '.$operator.' :'.$parameterName);
328-
$qb->setParameter($parameterName, $value);
336+
$qb->andWhere($columnNamePrefix.$entityName.'.'.$columnName.' '.$columnNameSuffix.' '.$operator.' :'.$parameterName);
337+
$qb->setParameter($parameterName, $value);
338+
}
329339

330340
return $qb;
331341
}
@@ -352,27 +362,20 @@ class MyClassRepositoryBase extends \Doctrine\Bundle\DoctrineBundle\Repository\S
352362

353363
public static function filterById(
354364
QueryBuilder $qb,
355-
$value,
365+
mixed $value,
356366
$operator = Comparison::EQ,
357367
$entityName = self::NAME,
358368
$columnName = 'id',
369+
string $columnNamePrefix = '',
370+
string $columnNameSuffix = '',
359371
): QueryBuilder {
360-
if ($value === null) {
361-
if (Comparison::NEQ === $operator) {
362-
$qb->andWhere($entityName.'.'.$columnName.' IS NOT NULL');
363-
} else {
364-
$qb->andWhere($entityName.'.'.$columnName.' IS NULL');
365-
}
366-
} else {
367-
//get a uniq index
368-
$index = static::getParameterIndex();
369-
$parameterName = $columnName.$index;
370-
371-
$qb->andWhere($entityName.'.'.$columnName.$operator.':'.$parameterName);
372-
$qb->setParameter($parameterName, $value);
373-
}
374-
375-
return $qb;
372+
return self::filterBy(
373+
qb: $qb,
374+
columnName: $columnName,
375+
operator: $operator,
376+
value: $value,
377+
entityName: $entityName,
378+
);
376379
}
377380

378381
public static function filterInId(
@@ -504,27 +507,20 @@ class MyClassRepositoryBase extends \Doctrine\Bundle\DoctrineBundle\Repository\S
504507

505508
public static function filterByNumber(
506509
QueryBuilder $qb,
507-
$value,
510+
mixed $value,
508511
$operator = Comparison::EQ,
509512
$entityName = self::NAME,
510513
$columnName = 'number',
514+
string $columnNamePrefix = '',
515+
string $columnNameSuffix = '',
511516
): QueryBuilder {
512-
if ($value === null) {
513-
if (Comparison::NEQ === $operator) {
514-
$qb->andWhere($entityName.'.'.$columnName.' IS NOT NULL');
515-
} else {
516-
$qb->andWhere($entityName.'.'.$columnName.' IS NULL');
517-
}
518-
} else {
519-
//get a uniq index
520-
$index = static::getParameterIndex();
521-
$parameterName = $columnName.$index;
522-
523-
$qb->andWhere($entityName.'.'.$columnName.$operator.':'.$parameterName);
524-
$qb->setParameter($parameterName, $value);
525-
}
526-
527-
return $qb;
517+
return self::filterBy(
518+
qb: $qb,
519+
columnName: $columnName,
520+
operator: $operator,
521+
value: $value,
522+
entityName: $entityName,
523+
);
528524
}
529525

530526
public static function filterInNumber(
@@ -656,27 +652,20 @@ class MyClassRepositoryBase extends \Doctrine\Bundle\DoctrineBundle\Repository\S
656652

657653
public static function filterByName(
658654
QueryBuilder $qb,
659-
$value,
655+
mixed $value,
660656
$operator = Comparison::EQ,
661657
$entityName = self::NAME,
662658
$columnName = 'name',
659+
string $columnNamePrefix = '',
660+
string $columnNameSuffix = '',
663661
): QueryBuilder {
664-
if ($value === null) {
665-
if (Comparison::NEQ === $operator) {
666-
$qb->andWhere($entityName.'.'.$columnName.' IS NOT NULL');
667-
} else {
668-
$qb->andWhere($entityName.'.'.$columnName.' IS NULL');
669-
}
670-
} else {
671-
//get a uniq index
672-
$index = static::getParameterIndex();
673-
$parameterName = $columnName.$index;
674-
675-
$qb->andWhere($entityName.'.'.$columnName.$operator.':'.$parameterName);
676-
$qb->setParameter($parameterName, $value);
677-
}
678-
679-
return $qb;
662+
return self::filterBy(
663+
qb: $qb,
664+
columnName: $columnName,
665+
operator: $operator,
666+
value: $value,
667+
entityName: $entityName,
668+
);
680669
}
681670

682671
public static function filterInName(

0 commit comments

Comments
 (0)