diff --git a/src/Resources/views/Generator/ColumnTemplate.html.twig b/src/Resources/views/Generator/ColumnTemplate.html.twig index 09fddf6..c8f0a09 100644 --- a/src/Resources/views/Generator/ColumnTemplate.html.twig +++ b/src/Resources/views/Generator/ColumnTemplate.html.twig @@ -1,27 +1,20 @@ public static function filterBy{{ column }}( QueryBuilder $qb, - $value, + mixed $value, $operator = Comparison::EQ, $entityName = self::NAME, $columnName = '{{ columnDql }}', + string $columnNamePrefix = '', + string $columnNameSuffix = '', ): QueryBuilder { - if ($value === null) { - if (Comparison::NEQ === $operator) { - $qb->andWhere($entityName.'.'.$columnName.' IS NOT NULL'); - } else { - $qb->andWhere($entityName.'.'.$columnName.' IS NULL'); - } - } else { - //get a uniq index - $index = static::getParameterIndex(); - $parameterName = $columnName.$index; - - $qb->andWhere($entityName.'.'.$columnName.$operator.':'.$parameterName); - $qb->setParameter($parameterName, $value); - } - - return $qb; + return self::filterBy( + qb: $qb, + columnName: $columnName, + operator: $operator, + value: $value, + entityName: $entityName, + ); } public static function filterIn{{ column }}( diff --git a/src/Resources/views/Generator/TopRepositoryTemplate.html.twig b/src/Resources/views/Generator/TopRepositoryTemplate.html.twig index a571824..1ae7337 100644 --- a/src/Resources/views/Generator/TopRepositoryTemplate.html.twig +++ b/src/Resources/views/Generator/TopRepositoryTemplate.html.twig @@ -332,18 +332,28 @@ class {{ entityClassname }}Base extends {{ extendClass }}{% if useInterfaces %} QueryBuilder $qb, string $columnName, string $operator, - string $value, + mixed $value, ?string $entityName = null, + string $columnNamePrefix = '', + string $columnNameSuffix = '', ): QueryBuilder { if (null === $entityName) { $entityName = self::NAME; } - $index = static::getParameterIndex(); - $parameterName = $columnName.$index; + if ($value === null) { + if (Comparison::NEQ === $operator) { + $qb->andWhere($entityName.'.'.$columnName.' IS NOT NULL'); + } else { + $qb->andWhere($entityName.'.'.$columnName.' IS NULL'); + } + } else { + $index = static::getParameterIndex(); + $parameterName = $columnName.$index; - $qb->andWhere($entityName.'.'.$columnName.' '.$operator.' :'.$parameterName); - $qb->setParameter($parameterName, $value); + $qb->andWhere($columnNamePrefix.$entityName.'.'.$columnName.' '.$columnNameSuffix.' '.$operator.' :'.$parameterName); + $qb->setParameter($parameterName, $value); + } return $qb; } diff --git a/tests/Repository/MyClassRepositoryBase.php b/tests/Repository/MyClassRepositoryBase.php index de7373c..3213271 100644 --- a/tests/Repository/MyClassRepositoryBase.php +++ b/tests/Repository/MyClassRepositoryBase.php @@ -314,18 +314,28 @@ public static function filterBy( QueryBuilder $qb, string $columnName, string $operator, - string $value, + mixed $value, ?string $entityName = null, + string $columnNamePrefix = '', + string $columnNameSuffix = '', ): QueryBuilder { if (null === $entityName) { $entityName = self::NAME; } - $index = static::getParameterIndex(); - $parameterName = $columnName.$index; + if ($value === null) { + if (Comparison::NEQ === $operator) { + $qb->andWhere($entityName.'.'.$columnName.' IS NOT NULL'); + } else { + $qb->andWhere($entityName.'.'.$columnName.' IS NULL'); + } + } else { + $index = static::getParameterIndex(); + $parameterName = $columnName.$index; - $qb->andWhere($entityName.'.'.$columnName.' '.$operator.' :'.$parameterName); - $qb->setParameter($parameterName, $value); + $qb->andWhere($columnNamePrefix.$entityName.'.'.$columnName.' '.$columnNameSuffix.' '.$operator.' :'.$parameterName); + $qb->setParameter($parameterName, $value); + } return $qb; } @@ -352,27 +362,20 @@ public static function filterIn( public static function filterById( QueryBuilder $qb, - $value, + mixed $value, $operator = Comparison::EQ, $entityName = self::NAME, $columnName = 'id', + string $columnNamePrefix = '', + string $columnNameSuffix = '', ): QueryBuilder { - if ($value === null) { - if (Comparison::NEQ === $operator) { - $qb->andWhere($entityName.'.'.$columnName.' IS NOT NULL'); - } else { - $qb->andWhere($entityName.'.'.$columnName.' IS NULL'); - } - } else { - //get a uniq index - $index = static::getParameterIndex(); - $parameterName = $columnName.$index; - - $qb->andWhere($entityName.'.'.$columnName.$operator.':'.$parameterName); - $qb->setParameter($parameterName, $value); - } - - return $qb; + return self::filterBy( + qb: $qb, + columnName: $columnName, + operator: $operator, + value: $value, + entityName: $entityName, + ); } public static function filterInId( @@ -504,27 +507,20 @@ public function deleteById( public static function filterByNumber( QueryBuilder $qb, - $value, + mixed $value, $operator = Comparison::EQ, $entityName = self::NAME, $columnName = 'number', + string $columnNamePrefix = '', + string $columnNameSuffix = '', ): QueryBuilder { - if ($value === null) { - if (Comparison::NEQ === $operator) { - $qb->andWhere($entityName.'.'.$columnName.' IS NOT NULL'); - } else { - $qb->andWhere($entityName.'.'.$columnName.' IS NULL'); - } - } else { - //get a uniq index - $index = static::getParameterIndex(); - $parameterName = $columnName.$index; - - $qb->andWhere($entityName.'.'.$columnName.$operator.':'.$parameterName); - $qb->setParameter($parameterName, $value); - } - - return $qb; + return self::filterBy( + qb: $qb, + columnName: $columnName, + operator: $operator, + value: $value, + entityName: $entityName, + ); } public static function filterInNumber( @@ -656,27 +652,20 @@ public function deleteByNumber( public static function filterByName( QueryBuilder $qb, - $value, + mixed $value, $operator = Comparison::EQ, $entityName = self::NAME, $columnName = 'name', + string $columnNamePrefix = '', + string $columnNameSuffix = '', ): QueryBuilder { - if ($value === null) { - if (Comparison::NEQ === $operator) { - $qb->andWhere($entityName.'.'.$columnName.' IS NOT NULL'); - } else { - $qb->andWhere($entityName.'.'.$columnName.' IS NULL'); - } - } else { - //get a uniq index - $index = static::getParameterIndex(); - $parameterName = $columnName.$index; - - $qb->andWhere($entityName.'.'.$columnName.$operator.':'.$parameterName); - $qb->setParameter($parameterName, $value); - } - - return $qb; + return self::filterBy( + qb: $qb, + columnName: $columnName, + operator: $operator, + value: $value, + entityName: $entityName, + ); } public static function filterInName( diff --git a/tests/Service/ExpectedMyClassRepositoryBase.txt b/tests/Service/ExpectedMyClassRepositoryBase.txt index de7373c..3213271 100644 --- a/tests/Service/ExpectedMyClassRepositoryBase.txt +++ b/tests/Service/ExpectedMyClassRepositoryBase.txt @@ -314,18 +314,28 @@ class MyClassRepositoryBase extends \Doctrine\Bundle\DoctrineBundle\Repository\S QueryBuilder $qb, string $columnName, string $operator, - string $value, + mixed $value, ?string $entityName = null, + string $columnNamePrefix = '', + string $columnNameSuffix = '', ): QueryBuilder { if (null === $entityName) { $entityName = self::NAME; } - $index = static::getParameterIndex(); - $parameterName = $columnName.$index; + if ($value === null) { + if (Comparison::NEQ === $operator) { + $qb->andWhere($entityName.'.'.$columnName.' IS NOT NULL'); + } else { + $qb->andWhere($entityName.'.'.$columnName.' IS NULL'); + } + } else { + $index = static::getParameterIndex(); + $parameterName = $columnName.$index; - $qb->andWhere($entityName.'.'.$columnName.' '.$operator.' :'.$parameterName); - $qb->setParameter($parameterName, $value); + $qb->andWhere($columnNamePrefix.$entityName.'.'.$columnName.' '.$columnNameSuffix.' '.$operator.' :'.$parameterName); + $qb->setParameter($parameterName, $value); + } return $qb; } @@ -352,27 +362,20 @@ class MyClassRepositoryBase extends \Doctrine\Bundle\DoctrineBundle\Repository\S public static function filterById( QueryBuilder $qb, - $value, + mixed $value, $operator = Comparison::EQ, $entityName = self::NAME, $columnName = 'id', + string $columnNamePrefix = '', + string $columnNameSuffix = '', ): QueryBuilder { - if ($value === null) { - if (Comparison::NEQ === $operator) { - $qb->andWhere($entityName.'.'.$columnName.' IS NOT NULL'); - } else { - $qb->andWhere($entityName.'.'.$columnName.' IS NULL'); - } - } else { - //get a uniq index - $index = static::getParameterIndex(); - $parameterName = $columnName.$index; - - $qb->andWhere($entityName.'.'.$columnName.$operator.':'.$parameterName); - $qb->setParameter($parameterName, $value); - } - - return $qb; + return self::filterBy( + qb: $qb, + columnName: $columnName, + operator: $operator, + value: $value, + entityName: $entityName, + ); } public static function filterInId( @@ -504,27 +507,20 @@ class MyClassRepositoryBase extends \Doctrine\Bundle\DoctrineBundle\Repository\S public static function filterByNumber( QueryBuilder $qb, - $value, + mixed $value, $operator = Comparison::EQ, $entityName = self::NAME, $columnName = 'number', + string $columnNamePrefix = '', + string $columnNameSuffix = '', ): QueryBuilder { - if ($value === null) { - if (Comparison::NEQ === $operator) { - $qb->andWhere($entityName.'.'.$columnName.' IS NOT NULL'); - } else { - $qb->andWhere($entityName.'.'.$columnName.' IS NULL'); - } - } else { - //get a uniq index - $index = static::getParameterIndex(); - $parameterName = $columnName.$index; - - $qb->andWhere($entityName.'.'.$columnName.$operator.':'.$parameterName); - $qb->setParameter($parameterName, $value); - } - - return $qb; + return self::filterBy( + qb: $qb, + columnName: $columnName, + operator: $operator, + value: $value, + entityName: $entityName, + ); } public static function filterInNumber( @@ -656,27 +652,20 @@ class MyClassRepositoryBase extends \Doctrine\Bundle\DoctrineBundle\Repository\S public static function filterByName( QueryBuilder $qb, - $value, + mixed $value, $operator = Comparison::EQ, $entityName = self::NAME, $columnName = 'name', + string $columnNamePrefix = '', + string $columnNameSuffix = '', ): QueryBuilder { - if ($value === null) { - if (Comparison::NEQ === $operator) { - $qb->andWhere($entityName.'.'.$columnName.' IS NOT NULL'); - } else { - $qb->andWhere($entityName.'.'.$columnName.' IS NULL'); - } - } else { - //get a uniq index - $index = static::getParameterIndex(); - $parameterName = $columnName.$index; - - $qb->andWhere($entityName.'.'.$columnName.$operator.':'.$parameterName); - $qb->setParameter($parameterName, $value); - } - - return $qb; + return self::filterBy( + qb: $qb, + columnName: $columnName, + operator: $operator, + value: $value, + entityName: $entityName, + ); } public static function filterInName(