Uploaded image for project: 'Doctrine 2 - ORM'
  1. Doctrine 2 - ORM
  2. DDC-2319

[GH-590] DQL Query: process ArrayCollection values to ease development


    • Type: Improvement
    • Status: Resolved
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: 2.5
    • Component/s: None
    • Security Level: All
    • Labels:


      This issue is created automatically through a Github pull request on behalf of michaelperrin:

      Url: https://github.com/doctrine/doctrine2/pull/590


      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:

      $queryBuilder = $this
      ->where('model.category = :category')
      ->setParameter('category', $category)
      Where `$category` is an object.

      But it doesn't work for collections:
      $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:

      $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?



        beberlei Benjamin Eberlei created issue -
        beberlei Benjamin Eberlei made changes -
        Field Original Value New Value
        Issue Type Bug [ 1 ] Improvement [ 4 ]
        ocramius Marco Pivetta made changes -
        Status Open [ 1 ] Resolved [ 5 ]
        Assignee Benjamin Eberlei [ beberlei ] Guilherme Blanco [ guilhermeblanco ]
        Fix Version/s 2.5 [ 10522 ]
        Resolution Fixed [ 1 ]


          • Assignee:
            guilhermeblanco Guilherme Blanco
            beberlei Benjamin Eberlei
          • Votes:
            0 Vote for this issue
            3 Start watching this issue


            • Created: