Details
-
Type:
Improvement
-
Status:
Open
-
Priority:
Major
-
Resolution: Unresolved
-
Affects Version/s: None
-
Fix Version/s: None
-
Component/s: None
-
Security Level: All
-
Labels:None
Description
This issue is created automatically through a Github pull request on behalf of michaelperrin:
Url: https://github.com/doctrine/doctrine2/pull/590
Message:
I added some code to ease "where in" parameter binding.
As you know, when a where condition is added, the object itself can be passed as a parameter and it's id is automatically retrieved:
```php
$queryBuilder = $this
->where('model.category = :category')
->setParameter('category', $category)
;
```
Where `$category` is an object.
But it doesn't work for collections:
```php
$queryBuilder = $this
->where('model.category IN (:categories)')
->setParameter('categories', $categories)
;
```
Where categories is an `ArrayCollection` object (retrieved from a many to one relation for instance).
This doesn't work in the current version of Doctrine, and my PR solved that.
So far, the only solution is to do the following:
```php
$categoryIds = array();
foreach ($categories as $category)
{ $categoryIds[] = $category->getId(); }$queryBuilder = $this
->where('model.category IN (:category_ids)')
->setParameter('category_ids', $categoryIds)
;
```
And this is pretty borring when you have to do it several times for several entities.
Note that I didn't add any unit test for this feature. Can you explain me where I should add the test?
Thanks!
Activity
| Field | Original Value | New Value |
|---|---|---|
| Issue Type | Bug [ 1 ] | Improvement [ 4 ] |