Skip to content

Commit

Permalink
Bump Doctrine Collections to 2.2 (#11325)
Browse files Browse the repository at this point in the history
  • Loading branch information
derrabus committed Mar 1, 2024
1 parent ba0d384 commit cb49782
Show file tree
Hide file tree
Showing 7 changed files with 22 additions and 75 deletions.
2 changes: 1 addition & 1 deletion composer.json
Expand Up @@ -23,7 +23,7 @@
"php": "^8.1",
"composer-runtime-api": "^2",
"ext-ctype": "*",
"doctrine/collections": "^2.1",
"doctrine/collections": "^2.2",
"doctrine/dbal": "^3.8.2 || ^4",
"doctrine/deprecations": "^0.5.3 || ^1",
"doctrine/event-manager": "^1.2 || ^2",
Expand Down
10 changes: 4 additions & 6 deletions src/Cache/Persister/Entity/AbstractEntityPersister.php
Expand Up @@ -5,6 +5,7 @@
namespace Doctrine\ORM\Cache\Persister\Entity;

use Doctrine\Common\Collections\Criteria;
use Doctrine\Common\Collections\Order;
use Doctrine\DBAL\LockMode;
use Doctrine\ORM\Cache;
use Doctrine\ORM\Cache\CollectionCacheKey;
Expand All @@ -17,7 +18,6 @@
use Doctrine\ORM\Cache\TimestampCacheKey;
use Doctrine\ORM\Cache\TimestampRegion;
use Doctrine\ORM\EntityManagerInterface;
use Doctrine\ORM\Internal\CriteriaOrderings;
use Doctrine\ORM\Mapping\AssociationMapping;
use Doctrine\ORM\Mapping\ClassMetadata;
use Doctrine\ORM\Mapping\ClassMetadataFactory;
Expand All @@ -34,8 +34,6 @@

abstract class AbstractEntityPersister implements CachedEntityPersister
{
use CriteriaOrderings;

protected UnitOfWork $uow;
protected ClassMetadataFactory $metadataFactory;

Expand Down Expand Up @@ -204,8 +202,8 @@ private function storeJoinedAssociations(object $entity): void
/**
* Generates a string of currently query
*
* @param string[]|Criteria $criteria
* @param string[]|null $orderBy
* @param string[]|Criteria $criteria
* @param array<string, Order>|null $orderBy
*/
protected function getHash(
string $query,
Expand Down Expand Up @@ -429,7 +427,7 @@ public function count(array|Criteria $criteria = []): int
*/
public function loadCriteria(Criteria $criteria): array
{
$orderBy = self::getCriteriaOrderings($criteria);
$orderBy = $criteria->orderings();
$limit = $criteria->getMaxResults();
$offset = $criteria->getFirstResult();
$query = $this->persister->getSelectSQL($criteria);
Expand Down
50 changes: 0 additions & 50 deletions src/Internal/CriteriaOrderings.php

This file was deleted.

14 changes: 8 additions & 6 deletions src/PersistentCollection.php
Expand Up @@ -8,8 +8,8 @@
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\Common\Collections\Criteria;
use Doctrine\Common\Collections\Order;
use Doctrine\Common\Collections\Selectable;
use Doctrine\ORM\Internal\CriteriaOrderings;
use Doctrine\ORM\Mapping\AssociationMapping;
use Doctrine\ORM\Mapping\ClassMetadata;
use Doctrine\ORM\Mapping\ToManyAssociationMapping;
Expand All @@ -24,6 +24,7 @@
use function assert;
use function is_object;
use function spl_object_id;
use function strtoupper;

/**
* A PersistentCollection represents a collection of elements that have persistent state.
Expand All @@ -41,8 +42,6 @@
*/
final class PersistentCollection extends AbstractLazyCollection implements Selectable
{
use CriteriaOrderings;

/**
* A snapshot of the collection at the moment it was fetched from the database.
* This is used to create a diff of the collection at commit time.
Expand Down Expand Up @@ -588,9 +587,12 @@ public function matching(Criteria $criteria): Collection

$criteria = clone $criteria;
$criteria->where($expression);
$criteria->orderBy(self::mapToOrderEnumIfAvailable(
self::getCriteriaOrderings($criteria) ?: $association->orderBy(),
));
$criteria->orderBy(
$criteria->orderings() ?: array_map(
static fn (string $order): Order => Order::from(strtoupper($order)),
$association->orderBy(),
),
);

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

Expand Down
7 changes: 2 additions & 5 deletions src/Persisters/Collection/ManyToManyPersister.php
Expand Up @@ -9,7 +9,6 @@
use Doctrine\Common\Collections\Expr\Comparison;
use Doctrine\DBAL\Exception as DBALException;
use Doctrine\DBAL\LockMode;
use Doctrine\ORM\Internal\CriteriaOrderings;
use Doctrine\ORM\Mapping\AssociationMapping;
use Doctrine\ORM\Mapping\ClassMetadata;
use Doctrine\ORM\Mapping\InverseSideMapping;
Expand All @@ -33,8 +32,6 @@
*/
class ManyToManyPersister extends AbstractCollectionPersister
{
use CriteriaOrderings;

public function delete(PersistentCollection $collection): void
{
$mapping = $this->getMapping($collection);
Expand Down Expand Up @@ -735,7 +732,7 @@ private function expandCriteriaParameters(Criteria $criteria): array

private function getOrderingSql(Criteria $criteria, ClassMetadata $targetClass): string
{
$orderings = self::getCriteriaOrderings($criteria);
$orderings = $criteria->orderings();
if ($orderings) {
$orderBy = [];
foreach ($orderings as $name => $direction) {
Expand All @@ -744,7 +741,7 @@ private function getOrderingSql(Criteria $criteria, ClassMetadata $targetClass):
$targetClass,
$this->platform,
);
$orderBy[] = $field . ' ' . $direction;
$orderBy[] = $field . ' ' . $direction->value;
}

return ' ORDER BY ' . implode(', ', $orderBy);
Expand Down
8 changes: 5 additions & 3 deletions src/Persisters/Entity/BasicEntityPersister.php
Expand Up @@ -7,6 +7,7 @@
use BackedEnum;
use Doctrine\Common\Collections\Criteria;
use Doctrine\Common\Collections\Expr\Comparison;
use Doctrine\Common\Collections\Order;
use Doctrine\DBAL\ArrayParameterType;
use Doctrine\DBAL\Connection;
use Doctrine\DBAL\LockMode;
Expand All @@ -16,7 +17,6 @@
use Doctrine\DBAL\Types\Type;
use Doctrine\DBAL\Types\Types;
use Doctrine\ORM\EntityManagerInterface;
use Doctrine\ORM\Internal\CriteriaOrderings;
use Doctrine\ORM\Mapping\AssociationMapping;
use Doctrine\ORM\Mapping\ClassMetadata;
use Doctrine\ORM\Mapping\JoinColumnMapping;
Expand Down Expand Up @@ -98,7 +98,6 @@
*/
class BasicEntityPersister implements EntityPersister
{
use CriteriaOrderings;
use LockSqlHelper;

/** @var array<string,string> */
Expand Down Expand Up @@ -844,7 +843,10 @@ public function count(array|Criteria $criteria = []): int
*/
public function loadCriteria(Criteria $criteria): array
{
$orderBy = self::getCriteriaOrderings($criteria);
$orderBy = array_map(
static fn (Order $order): string => $order->value,
$criteria->orderings(),
);
$limit = $criteria->getMaxResults();
$offset = $criteria->getFirstResult();
$query = $this->getSelectSQL($criteria, null, null, $limit, $offset, $orderBy);
Expand Down
6 changes: 2 additions & 4 deletions src/QueryBuilder.php
Expand Up @@ -8,7 +8,6 @@
use Doctrine\Common\Collections\Criteria;
use Doctrine\DBAL\ArrayParameterType;
use Doctrine\DBAL\ParameterType;
use Doctrine\ORM\Internal\CriteriaOrderings;
use Doctrine\ORM\Internal\NoUnknownNamedArguments;
use Doctrine\ORM\Internal\QueryType;
use Doctrine\ORM\Query\Expr;
Expand Down Expand Up @@ -42,7 +41,6 @@
*/
class QueryBuilder implements Stringable
{
use CriteriaOrderings;
use NoUnknownNamedArguments;

/**
Expand Down Expand Up @@ -1189,7 +1187,7 @@ public function addCriteria(Criteria $criteria): static
}
}

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

$this->addOrderBy($sort, $order);
$this->addOrderBy($sort, $order->value);
}

// Overwrite limits only if they was set in criteria
Expand Down

0 comments on commit cb49782

Please sign in to comment.