[PR #360] [MERGED] [DDC-1840] Implemented parameters as a collection. #8078

Closed
opened 2026-01-22 15:58:17 +01:00 by admin · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/doctrine/orm/pull/360
Author: @guilhermeblanco
Created: 5/28/2012
Status: Merged
Merged: 5/29/2012
Merged by: @guilhermeblanco

Base: masterHead: DDC-1840


📝 Commits (6)

  • 1635e0a [DDC-1840] Implemented parameters as a collection.
  • 79ff1f1 Optimized getParameter.
  • d8e165d Added 2.3 BC break information.
  • b3e7493 Made setParameters()/excute()/iterate() BC compatible.
  • 161ae31 Adde more BC compatibility in setParameters.
  • 15f76c6 Update UPGRADE_TO_2_3

📊 Changes

14 files changed (+404 additions, -182 deletions)

View changed files

📝 UPGRADE_TO_2_3 (+18 -0)
📝 lib/Doctrine/ORM/AbstractQuery.php (+92 -91)
📝 lib/Doctrine/ORM/NativeQuery.php (+18 -7)
📝 lib/Doctrine/ORM/Query.php (+23 -14)
📝 lib/Doctrine/ORM/Query/Exec/MultiTableUpdateExecutor.php (+15 -6)
lib/Doctrine/ORM/Query/Parameter.php (+101 -0)
📝 lib/Doctrine/ORM/Query/SqlWalker.php (+3 -4)
📝 lib/Doctrine/ORM/QueryBuilder.php (+25 -23)
📝 tests/Doctrine/Tests/ORM/Functional/HydrationCacheTest.php (+7 -3)
📝 tests/Doctrine/Tests/ORM/Functional/NativeQueryTest.php (+14 -6)
📝 tests/Doctrine/Tests/ORM/Functional/QueryCacheTest.php (+4 -1)
📝 tests/Doctrine/Tests/ORM/Functional/QueryTest.php (+30 -9)
📝 tests/Doctrine/Tests/ORM/Query/QueryTest.php (+27 -10)
📝 tests/Doctrine/Tests/ORM/QueryBuilderTest.php (+27 -8)

📄 Description

Breaking down the changes per method:

execute

BEFORE:

$query = $entityManager->createQuery(
    'SELECT u  FROM User u WHERE u.id = :id'
);
$result = $query->execute(array('id' => 1));

AFTER:

$query = $entityManager->createQuery(
    'SELECT u  FROM User u WHERE u.id = :id'
);
$result = $query->execute(new ArrayCollection(array(new Parameter('id', 1))));

setParameters

BEFORE:

$query = $entityManager->createQuery(
    'SELECT u  FROM User u WHERE u.id = :id AND u.status = :status'
);
$query->setParameters(array(
    'id'     => 1,
    'status' => 'active'
));
$result = $query->getResult();

AFTER:

$query = $entityManager->createQuery(
    'SELECT u  FROM User u WHERE u.id = :id AND u.status = :status'
);
$query->setParameters(new ArrayCollection(array(
    new Parameter('id', 1),
    new Parameter('status', 'active')
));
$result = $query->getResult();

getParameter

BEFORE:

$query = $entityManager->createQuery(
    'SELECT u  FROM User u WHERE u.id = :id AND u.status = :status'
);
$query->setParameters(array(
    'id'     => 1,
    'status' => 'active'
));

$parameter = $query->getParameter('id');

// $parameter === 1
// $query->getParameterType('id') === PDO::PARAM_INT

AFTER:

$query = $entityManager->createQuery(
    'SELECT u  FROM User u WHERE u.id = :id AND u.status = :status'
);
$query->setParameters(new ArrayCollection(array(
    new Parameter('id', 1),
    new Parameter('status', 'active')
));


$parameter = $query->getParameter('id');

// $parameter->getName() === 'id'
// $parameter->getValue() === 1
// $parameter->getType() === \PDO::PARAM_INT

Related changes:

BEFORE:

$user = $entityManager->getReference('User', 1);

$query->setParameter(1, $user);

// $query->getParameter(1) === 1

AFTER

$user = $entityManager->getReference('User', 1);

$query->setParameter(1, $user);

// $query->getParameter(1) instanceof Doctrine\ORM\Query\Parameter

$parameter = $query->getParameter(1);

// $parameter->getValue() === $user

🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/doctrine/orm/pull/360 **Author:** [@guilhermeblanco](https://github.com/guilhermeblanco) **Created:** 5/28/2012 **Status:** ✅ Merged **Merged:** 5/29/2012 **Merged by:** [@guilhermeblanco](https://github.com/guilhermeblanco) **Base:** `master` ← **Head:** `DDC-1840` --- ### 📝 Commits (6) - [`1635e0a`](https://github.com/doctrine/orm/commit/1635e0af4b06ef3015205563b59b505ae3fac69d) [DDC-1840] Implemented parameters as a collection. - [`79ff1f1`](https://github.com/doctrine/orm/commit/79ff1f10d2d6553d0a73203c8267e1acd9e8d98c) Optimized getParameter. - [`d8e165d`](https://github.com/doctrine/orm/commit/d8e165da8d5e7b63d628bb7e79f5fd90965b3808) Added 2.3 BC break information. - [`b3e7493`](https://github.com/doctrine/orm/commit/b3e7493278ce4915d7b741a4ea3cd390030b82bb) Made setParameters()/excute()/iterate() BC compatible. - [`161ae31`](https://github.com/doctrine/orm/commit/161ae31a7e044a7f0dda357ed271215f2317e9a5) Adde more BC compatibility in setParameters. - [`15f76c6`](https://github.com/doctrine/orm/commit/15f76c62bb9a826939173f07f5fded7283e9f75b) Update UPGRADE_TO_2_3 ### 📊 Changes **14 files changed** (+404 additions, -182 deletions) <details> <summary>View changed files</summary> 📝 `UPGRADE_TO_2_3` (+18 -0) 📝 `lib/Doctrine/ORM/AbstractQuery.php` (+92 -91) 📝 `lib/Doctrine/ORM/NativeQuery.php` (+18 -7) 📝 `lib/Doctrine/ORM/Query.php` (+23 -14) 📝 `lib/Doctrine/ORM/Query/Exec/MultiTableUpdateExecutor.php` (+15 -6) ➕ `lib/Doctrine/ORM/Query/Parameter.php` (+101 -0) 📝 `lib/Doctrine/ORM/Query/SqlWalker.php` (+3 -4) 📝 `lib/Doctrine/ORM/QueryBuilder.php` (+25 -23) 📝 `tests/Doctrine/Tests/ORM/Functional/HydrationCacheTest.php` (+7 -3) 📝 `tests/Doctrine/Tests/ORM/Functional/NativeQueryTest.php` (+14 -6) 📝 `tests/Doctrine/Tests/ORM/Functional/QueryCacheTest.php` (+4 -1) 📝 `tests/Doctrine/Tests/ORM/Functional/QueryTest.php` (+30 -9) 📝 `tests/Doctrine/Tests/ORM/Query/QueryTest.php` (+27 -10) 📝 `tests/Doctrine/Tests/ORM/QueryBuilderTest.php` (+27 -8) </details> ### 📄 Description Breaking down the changes per method: **execute** BEFORE: ``` php $query = $entityManager->createQuery( 'SELECT u FROM User u WHERE u.id = :id' ); $result = $query->execute(array('id' => 1)); ``` AFTER: ``` php $query = $entityManager->createQuery( 'SELECT u FROM User u WHERE u.id = :id' ); $result = $query->execute(new ArrayCollection(array(new Parameter('id', 1)))); ``` **setParameters** BEFORE: ``` php $query = $entityManager->createQuery( 'SELECT u FROM User u WHERE u.id = :id AND u.status = :status' ); $query->setParameters(array( 'id' => 1, 'status' => 'active' )); $result = $query->getResult(); ``` AFTER: ``` php $query = $entityManager->createQuery( 'SELECT u FROM User u WHERE u.id = :id AND u.status = :status' ); $query->setParameters(new ArrayCollection(array( new Parameter('id', 1), new Parameter('status', 'active') )); $result = $query->getResult(); ``` **getParameter** BEFORE: ``` php $query = $entityManager->createQuery( 'SELECT u FROM User u WHERE u.id = :id AND u.status = :status' ); $query->setParameters(array( 'id' => 1, 'status' => 'active' )); $parameter = $query->getParameter('id'); // $parameter === 1 // $query->getParameterType('id') === PDO::PARAM_INT ``` AFTER: ``` php $query = $entityManager->createQuery( 'SELECT u FROM User u WHERE u.id = :id AND u.status = :status' ); $query->setParameters(new ArrayCollection(array( new Parameter('id', 1), new Parameter('status', 'active') )); $parameter = $query->getParameter('id'); // $parameter->getName() === 'id' // $parameter->getValue() === 1 // $parameter->getType() === \PDO::PARAM_INT ``` Related changes: BEFORE: ``` php $user = $entityManager->getReference('User', 1); $query->setParameter(1, $user); // $query->getParameter(1) === 1 ``` AFTER ``` php $user = $entityManager->getReference('User', 1); $query->setParameter(1, $user); // $query->getParameter(1) instanceof Doctrine\ORM\Query\Parameter $parameter = $query->getParameter(1); // $parameter->getValue() === $user ``` --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
admin added the pull-request label 2026-01-22 15:58:17 +01:00
admin closed this issue 2026-01-22 15:58:17 +01:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: doctrine/archived-orm#8078