Skip to content

Commit 662ad04

Browse files
committed
feat(mongodb): ODM support for new filters
Continues the work at #7079 and before at #6865 See #6971.
1 parent 22253bd commit 662ad04

File tree

5 files changed

+17
-19
lines changed

5 files changed

+17
-19
lines changed

src/Doctrine/Odm/Filter/ExactFilter.php

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -30,18 +30,14 @@ public function apply(Builder $aggregationBuilder, string $resourceClass, ?Opera
3030
\assert($parameter instanceof Parameter);
3131

3232
$values = (array) $parameter->getValue();
33-
if ([] === $values) {
34-
return;
35-
}
3633

37-
$matchField = $parameter->getProperty();
38-
$fieldQuery = $aggregationBuilder->match()->field($matchField);
34+
//TODO: handle nested properties
35+
$property = $parameter->getProperty();
3936

40-
if (\count($values) > 1) {
41-
$fieldQuery->in($values);
42-
} else {
43-
$fieldQuery->equals(reset($values));
44-
}
37+
$aggregationBuilder
38+
->match()
39+
->field($property)
40+
->in($values);
4541
}
4642

4743
public function getOpenApiParameters(Parameter $parameter): OpenApiParameter|array|null

src/Doctrine/Odm/Filter/IriFilter.php

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,11 +36,12 @@ public function apply(Builder $aggregationBuilder, string $resourceClass, ?Opera
3636
$value = [$value];
3737
}
3838

39-
$matchField = $parameter->getProperty();
39+
//TODO: handle nested properties
40+
$property = $parameter->getProperty();
4041

4142
$aggregationBuilder
4243
->match()
43-
->field($matchField)
44+
->field($property)
4445
->in($value);
4546
}
4647

src/Doctrine/Odm/Filter/PartialSearchFilter.php

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,12 +35,13 @@ public function apply(Builder $aggregationBuilder, string $resourceClass, ?Opera
3535
return;
3636
}
3737

38-
$matchField = $parameter->getProperty();
38+
//TODO: handle nested properties
39+
$property = $parameter->getProperty();
3940
$escapedValue = preg_quote($value, '/');
4041

4142
$aggregationBuilder
4243
->match()
43-
->field($matchField)
44+
->field($property)
4445
->equals(new Regex($escapedValue, 'i'));
4546
}
4647

tests/Fixtures/TestBundle/Document/Chicken.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232
)]
3333
class Chicken
3434
{
35-
#[ODM\Id]
35+
#[ODM\Id(type: 'string', strategy: 'INCREMENT')]
3636
private ?string $id = null;
3737

3838
#[ODM\Field(type: 'string')]
@@ -41,7 +41,7 @@ class Chicken
4141
#[ODM\ReferenceOne(targetDocument: ChickenCoop::class, inversedBy: 'chickens')]
4242
private ?ChickenCoop $chickenCoop = null;
4343

44-
public function getId(): ?string
44+
public function getId(): ?int
4545
{
4646
return $this->id;
4747
}

tests/Fixtures/TestBundle/Document/ChickenCoop.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,8 @@
2727
]
2828
class ChickenCoop
2929
{
30-
#[ODM\Id]
31-
private ?string $id = null;
30+
#[ODM\Id(type: 'int', strategy: 'INCREMENT')]
31+
private ?int $id = null;
3232

3333
#[ODM\ReferenceMany(targetDocument: Chicken::class, mappedBy: 'chickenCoop')]
3434
private Collection $chickens;
@@ -38,7 +38,7 @@ public function __construct()
3838
$this->chickens = new ArrayCollection();
3939
}
4040

41-
public function getId(): ?string
41+
public function getId(): ?int
4242
{
4343
return $this->id;
4444
}

0 commit comments

Comments
 (0)