| @@ 14-37 (lines=24) @@ | ||
| 11 | use eZ\Publish\Core\Persistence\Legacy\Content\Query\CriterionHandler; |
|
| 12 | use Doctrine\DBAL\Query\QueryBuilder; |
|
| 13 | ||
| 14 | class LogicalAnd implements CriterionHandler |
|
| 15 | { |
|
| 16 | /** |
|
| 17 | * {@inheritdoc} |
|
| 18 | */ |
|
| 19 | public function accept(Criterion $criterion): bool |
|
| 20 | { |
|
| 21 | return $criterion instanceof Criterion\LogicalAnd; |
|
| 22 | } |
|
| 23 | ||
| 24 | /** |
|
| 25 | * {@inheritdoc} |
|
| 26 | */ |
|
| 27 | public function handle(CriteriaConverter $converter, QueryBuilder $query, Criterion $criterion) |
|
| 28 | { |
|
| 29 | $subexpressions = []; |
|
| 30 | /** @var Criterion\LogicalOperator $criterion */ |
|
| 31 | foreach ($criterion->criteria as $subCriterion) { |
|
| 32 | $subexpressions[] = $converter->convertCriteria($query, $subCriterion); |
|
| 33 | } |
|
| 34 | ||
| 35 | return $query->expr()->andX(...$subexpressions); |
|
| 36 | } |
|
| 37 | } |
|
| 38 | ||
| @@ 14-37 (lines=24) @@ | ||
| 11 | use eZ\Publish\Core\Persistence\Legacy\Content\Query\CriterionHandler; |
|
| 12 | use Doctrine\DBAL\Query\QueryBuilder; |
|
| 13 | ||
| 14 | class LogicalOr implements CriterionHandler |
|
| 15 | { |
|
| 16 | /** |
|
| 17 | * {@inheritdoc} |
|
| 18 | */ |
|
| 19 | public function accept(Criterion $criterion): bool |
|
| 20 | { |
|
| 21 | return $criterion instanceof Criterion\LogicalOr; |
|
| 22 | } |
|
| 23 | ||
| 24 | /** |
|
| 25 | * {@inheritdoc} |
|
| 26 | */ |
|
| 27 | public function handle(CriteriaConverter $converter, QueryBuilder $query, Criterion $criterion) |
|
| 28 | { |
|
| 29 | $subexpressions = []; |
|
| 30 | /** @var Criterion\LogicalOperator $criterion */ |
|
| 31 | foreach ($criterion->criteria as $subCriterion) { |
|
| 32 | $subexpressions[] = $converter->convertCriteria($query, $subCriterion); |
|
| 33 | } |
|
| 34 | ||
| 35 | return $query->expr()->orX(...$subexpressions); |
|
| 36 | } |
|
| 37 | } |
|
| 38 | ||