Doctrine 2 - ORM
  1. Doctrine 2 - ORM
  2. DDC-2319

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

    Details

    • Type: Improvement Improvement
    • Status: Resolved
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: 2.5
    • 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

          People

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

            Dates

            • Created:
              Updated:
              Resolved: