Skip to content

Commit cb49782

Browse files
authored
Bump Doctrine Collections to 2.2 (#11325)
1 parent ba0d384 commit cb49782

File tree

7 files changed

+22
-75
lines changed

7 files changed

+22
-75
lines changed

composer.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
"php": "^8.1",
2424
"composer-runtime-api": "^2",
2525
"ext-ctype": "*",
26-
"doctrine/collections": "^2.1",
26+
"doctrine/collections": "^2.2",
2727
"doctrine/dbal": "^3.8.2 || ^4",
2828
"doctrine/deprecations": "^0.5.3 || ^1",
2929
"doctrine/event-manager": "^1.2 || ^2",

src/Cache/Persister/Entity/AbstractEntityPersister.php

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
namespace Doctrine\ORM\Cache\Persister\Entity;
66

77
use Doctrine\Common\Collections\Criteria;
8+
use Doctrine\Common\Collections\Order;
89
use Doctrine\DBAL\LockMode;
910
use Doctrine\ORM\Cache;
1011
use Doctrine\ORM\Cache\CollectionCacheKey;
@@ -17,7 +18,6 @@
1718
use Doctrine\ORM\Cache\TimestampCacheKey;
1819
use Doctrine\ORM\Cache\TimestampRegion;
1920
use Doctrine\ORM\EntityManagerInterface;
20-
use Doctrine\ORM\Internal\CriteriaOrderings;
2121
use Doctrine\ORM\Mapping\AssociationMapping;
2222
use Doctrine\ORM\Mapping\ClassMetadata;
2323
use Doctrine\ORM\Mapping\ClassMetadataFactory;
@@ -34,8 +34,6 @@
3434

3535
abstract class AbstractEntityPersister implements CachedEntityPersister
3636
{
37-
use CriteriaOrderings;
38-
3937
protected UnitOfWork $uow;
4038
protected ClassMetadataFactory $metadataFactory;
4139

@@ -204,8 +202,8 @@ private function storeJoinedAssociations(object $entity): void
204202
/**
205203
* Generates a string of currently query
206204
*
207-
* @param string[]|Criteria $criteria
208-
* @param string[]|null $orderBy
205+
* @param string[]|Criteria $criteria
206+
* @param array<string, Order>|null $orderBy
209207
*/
210208
protected function getHash(
211209
string $query,
@@ -429,7 +427,7 @@ public function count(array|Criteria $criteria = []): int
429427
*/
430428
public function loadCriteria(Criteria $criteria): array
431429
{
432-
$orderBy = self::getCriteriaOrderings($criteria);
430+
$orderBy = $criteria->orderings();
433431
$limit = $criteria->getMaxResults();
434432
$offset = $criteria->getFirstResult();
435433
$query = $this->persister->getSelectSQL($criteria);

src/Internal/CriteriaOrderings.php

Lines changed: 0 additions & 50 deletions
This file was deleted.

src/PersistentCollection.php

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@
88
use Doctrine\Common\Collections\ArrayCollection;
99
use Doctrine\Common\Collections\Collection;
1010
use Doctrine\Common\Collections\Criteria;
11+
use Doctrine\Common\Collections\Order;
1112
use Doctrine\Common\Collections\Selectable;
12-
use Doctrine\ORM\Internal\CriteriaOrderings;
1313
use Doctrine\ORM\Mapping\AssociationMapping;
1414
use Doctrine\ORM\Mapping\ClassMetadata;
1515
use Doctrine\ORM\Mapping\ToManyAssociationMapping;
@@ -24,6 +24,7 @@
2424
use function assert;
2525
use function is_object;
2626
use function spl_object_id;
27+
use function strtoupper;
2728

2829
/**
2930
* A PersistentCollection represents a collection of elements that have persistent state.
@@ -41,8 +42,6 @@
4142
*/
4243
final class PersistentCollection extends AbstractLazyCollection implements Selectable
4344
{
44-
use CriteriaOrderings;
45-
4645
/**
4746
* A snapshot of the collection at the moment it was fetched from the database.
4847
* This is used to create a diff of the collection at commit time.
@@ -588,9 +587,12 @@ public function matching(Criteria $criteria): Collection
588587

589588
$criteria = clone $criteria;
590589
$criteria->where($expression);
591-
$criteria->orderBy(self::mapToOrderEnumIfAvailable(
592-
self::getCriteriaOrderings($criteria) ?: $association->orderBy(),
593-
));
590+
$criteria->orderBy(
591+
$criteria->orderings() ?: array_map(
592+
static fn (string $order): Order => Order::from(strtoupper($order)),
593+
$association->orderBy(),
594+
),
595+
);
594596

595597
$persister = $this->getUnitOfWork()->getEntityPersister($association->targetEntity);
596598

src/Persisters/Collection/ManyToManyPersister.php

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99
use Doctrine\Common\Collections\Expr\Comparison;
1010
use Doctrine\DBAL\Exception as DBALException;
1111
use Doctrine\DBAL\LockMode;
12-
use Doctrine\ORM\Internal\CriteriaOrderings;
1312
use Doctrine\ORM\Mapping\AssociationMapping;
1413
use Doctrine\ORM\Mapping\ClassMetadata;
1514
use Doctrine\ORM\Mapping\InverseSideMapping;
@@ -33,8 +32,6 @@
3332
*/
3433
class ManyToManyPersister extends AbstractCollectionPersister
3534
{
36-
use CriteriaOrderings;
37-
3835
public function delete(PersistentCollection $collection): void
3936
{
4037
$mapping = $this->getMapping($collection);
@@ -735,7 +732,7 @@ private function expandCriteriaParameters(Criteria $criteria): array
735732

736733
private function getOrderingSql(Criteria $criteria, ClassMetadata $targetClass): string
737734
{
738-
$orderings = self::getCriteriaOrderings($criteria);
735+
$orderings = $criteria->orderings();
739736
if ($orderings) {
740737
$orderBy = [];
741738
foreach ($orderings as $name => $direction) {
@@ -744,7 +741,7 @@ private function getOrderingSql(Criteria $criteria, ClassMetadata $targetClass):
744741
$targetClass,
745742
$this->platform,
746743
);
747-
$orderBy[] = $field . ' ' . $direction;
744+
$orderBy[] = $field . ' ' . $direction->value;
748745
}
749746

750747
return ' ORDER BY ' . implode(', ', $orderBy);

src/Persisters/Entity/BasicEntityPersister.php

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
use BackedEnum;
88
use Doctrine\Common\Collections\Criteria;
99
use Doctrine\Common\Collections\Expr\Comparison;
10+
use Doctrine\Common\Collections\Order;
1011
use Doctrine\DBAL\ArrayParameterType;
1112
use Doctrine\DBAL\Connection;
1213
use Doctrine\DBAL\LockMode;
@@ -16,7 +17,6 @@
1617
use Doctrine\DBAL\Types\Type;
1718
use Doctrine\DBAL\Types\Types;
1819
use Doctrine\ORM\EntityManagerInterface;
19-
use Doctrine\ORM\Internal\CriteriaOrderings;
2020
use Doctrine\ORM\Mapping\AssociationMapping;
2121
use Doctrine\ORM\Mapping\ClassMetadata;
2222
use Doctrine\ORM\Mapping\JoinColumnMapping;
@@ -98,7 +98,6 @@
9898
*/
9999
class BasicEntityPersister implements EntityPersister
100100
{
101-
use CriteriaOrderings;
102101
use LockSqlHelper;
103102

104103
/** @var array<string,string> */
@@ -844,7 +843,10 @@ public function count(array|Criteria $criteria = []): int
844843
*/
845844
public function loadCriteria(Criteria $criteria): array
846845
{
847-
$orderBy = self::getCriteriaOrderings($criteria);
846+
$orderBy = array_map(
847+
static fn (Order $order): string => $order->value,
848+
$criteria->orderings(),
849+
);
848850
$limit = $criteria->getMaxResults();
849851
$offset = $criteria->getFirstResult();
850852
$query = $this->getSelectSQL($criteria, null, null, $limit, $offset, $orderBy);

src/QueryBuilder.php

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
use Doctrine\Common\Collections\Criteria;
99
use Doctrine\DBAL\ArrayParameterType;
1010
use Doctrine\DBAL\ParameterType;
11-
use Doctrine\ORM\Internal\CriteriaOrderings;
1211
use Doctrine\ORM\Internal\NoUnknownNamedArguments;
1312
use Doctrine\ORM\Internal\QueryType;
1413
use Doctrine\ORM\Query\Expr;
@@ -42,7 +41,6 @@
4241
*/
4342
class QueryBuilder implements Stringable
4443
{
45-
use CriteriaOrderings;
4644
use NoUnknownNamedArguments;
4745

4846
/**
@@ -1189,7 +1187,7 @@ public function addCriteria(Criteria $criteria): static
11891187
}
11901188
}
11911189

1192-
foreach (self::getCriteriaOrderings($criteria) as $sort => $order) {
1190+
foreach ($criteria->orderings() as $sort => $order) {
11931191
$hasValidAlias = false;
11941192
foreach ($allAliases as $alias) {
11951193
if (str_starts_with($sort . '.', $alias . '.')) {
@@ -1202,7 +1200,7 @@ public function addCriteria(Criteria $criteria): static
12021200
$sort = $allAliases[0] . '.' . $sort;
12031201
}
12041202

1205-
$this->addOrderBy($sort, $order);
1203+
$this->addOrderBy($sort, $order->value);
12061204
}
12071205

12081206
// Overwrite limits only if they was set in criteria

0 commit comments

Comments
 (0)