|
@@ -11,6 +11,10 @@ use Symfony\Component\PropertyInfo\Type;
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
* Is property included in the given CSV array
|
|
* Is property included in the given CSV array
|
|
|
|
|
+ *
|
|
|
|
|
+ * Ex:
|
|
|
|
|
+ *
|
|
|
|
|
+ * /api/accesses?id[in]=123,124,125
|
|
|
*/
|
|
*/
|
|
|
final class InFilter extends AbstractFilter {
|
|
final class InFilter extends AbstractFilter {
|
|
|
/**
|
|
/**
|
|
@@ -39,11 +43,14 @@ final class InFilter extends AbstractFilter {
|
|
|
return;
|
|
return;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ if (!isset($value['in'])) {
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
$alias = $queryBuilder->getRootAliases()[0];
|
|
$alias = $queryBuilder->getRootAliases()[0];
|
|
|
$parameterName = $queryNameGenerator->generateParameterName($property); // Generate a unique parameter name to avoid collisions with other filters
|
|
$parameterName = $queryNameGenerator->generateParameterName($property); // Generate a unique parameter name to avoid collisions with other filters
|
|
|
$queryBuilder
|
|
$queryBuilder
|
|
|
- ->andWhere(sprintf('%s.%s IN (:%s)', $alias, $property, $parameterName))
|
|
|
|
|
- ->setParameter($parameterName, explode(',', $value));
|
|
|
|
|
|
|
+ ->andWhere(sprintf('%s.%s IN (%s)', $alias, $property, $value['in']));
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -59,12 +66,12 @@ final class InFilter extends AbstractFilter {
|
|
|
|
|
|
|
|
$description = [];
|
|
$description = [];
|
|
|
foreach ($this->properties as $property => $strategy) {
|
|
foreach ($this->properties as $property => $strategy) {
|
|
|
- $description["$property"] = [
|
|
|
|
|
|
|
+ $description[$property . "[in]"] = [
|
|
|
'property' => $property,
|
|
'property' => $property,
|
|
|
'type' => Type::BUILTIN_TYPE_STRING,
|
|
'type' => Type::BUILTIN_TYPE_STRING,
|
|
|
'required' => false,
|
|
'required' => false,
|
|
|
'swagger' => [
|
|
'swagger' => [
|
|
|
- 'description' => 'Filtre permettant d\'utiliser les IN',
|
|
|
|
|
|
|
+ 'description' => 'Filtre permettant d\'utiliser les IN. (usage: `id[in]=1,2,3`)',
|
|
|
'name' => 'In Filter',
|
|
'name' => 'In Filter',
|
|
|
'type' => 'Utils Filter',
|
|
'type' => 'Utils Filter',
|
|
|
],
|
|
],
|