Details
-
Type:
Improvement
-
Status:
Open
-
Priority:
Minor
-
Resolution: Unresolved
-
Affects Version/s: 2.3, Git Master
-
Fix Version/s: None
-
Component/s: ORM
-
Security Level: All
-
Labels:
-
Environment:OS X 10.8.2, PHP 5.3.18, Nginx 1.2.4 (php through FPM)
Description
This issue is created automatically through a Github pull request on behalf of jappie:
Url: https://github.com/doctrine/doctrine2/pull/512
Message:
This method behaves like setParameters() before version 2.3:
It will add new parameters to the collection, and override any existing positions/names.
It can take a Doctrine\Common\Collections\ArrayCollection with Doctrine\ORM\Query\Parameter objects, as well as a plain array with key/value pairs, as argument.
This will greatly ease the upgrade to Doctrine 2.3, because you only need to perform a project-wide replace of setParameters with addParameters, in stead of going into your code and determine if calls to setParameters are ok or need refactoring.
I've also added unit-tests to maintain integrity.
Hi Guilherme,
I agree that such a method makes less sense in Query, because when you write a DQL string all parameters are known at once. But when using the QueryBuilder you might need different parameters in different cases, so addParameters() becomes useful there.
I guess it's just a convenience method, like IMHO setParameter() is. (You could just do $qb->getParameters()->add())
The main reason for adding the method was, like I said, upgrading to Doctrine 2.3. I've already upgraded all my projects to Doctrine 2.3, so the method is less useful for me now. But it took me a full day to refactor my repositories, because there is no safe way to automate the process. A simple search-and-replace setParameters() to addParameters() would have taken me 5 minutes
I'm content with your decision.
If others find addParameters() useful, I hope they let us know.