Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Bump Doctrine Collections to 2.2 #11325

Merged
merged 1 commit into from Mar 1, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
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