Doctrine 2 - ORM
  1. Doctrine 2 - ORM
  2. DDC-1757

DQL exception when building query with multiple from and join parts

    Details

    • Type: Bug Bug
    • Status: Resolved
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: Git Master
    • Fix Version/s: 2.3
    • Component/s: ORM
    • Security Level: All
    • Labels:
      None

      Description

      Query builder creates bad DQL if multiple FROM and JOIN parts are used.

      As example such query builder code

      $qb->from('A', 'a')
        ->from('B', 'b')
        ->join('b.c', 'c')
        ->join('c.d', 'd');
      

      will generate DQL

      ...
        FROM A a 
          INNER JOIN c.d d, 
        B b 
          INNER JOIN b.c c
      ...
      

      but should generate this instead

      ...
        FROM A a,
        B b 
          INNER JOIN b.c c 
          INNER JOIN c.d d
      ...
      

      The DQL parser raises exception

      Doctrine\ORM\Query\QueryException: [Semantical Error] line 0, col 61 near '.d d, B': Error: Identification Variable c used in join path expression but was not defined before.
      
      1. DDC1757Test.php
        2 kB
        Aigars Gedroics
      2. patch-1757.patch
        2 kB
        Aigars Gedroics

        Activity

        Aigars Gedroics created issue -
        Aigars Gedroics made changes -
        Field Original Value New Value
        Description Query builder creates bad DQL if multiple FROM and JOIN parts are used.

        As example such query builder code

        {code}
        $qb->from('A', 'a')
          ->from('B', 'b')
          ->join('b.c', 'c')
          ->join('c.d', 'd');
        {code}

        will generate DQL

        {code}
        ...
          FROM A a
            INNER JOIN c.d d,
          B b
            INNER JOIN b.c c
        ...
        {code}

        but should generate this instead

        {code}
        ...
          FROM A a,
          B b
            INNER JOIN b.c c
            INNER JOIN c.d d
        ...
        {code}

        The DQL parser raises exception

        {code}
        Doctrine\ORM\Query\QueryException: [Semantical Error] line 0, col 61 near '.d d, Supra\Tests\Doctrine\DDC2000B': Error: Identification Variable c used in join path expression but was not defined before.
        {code}
        Query builder creates bad DQL if multiple FROM and JOIN parts are used.

        As example such query builder code

        {code}
        $qb->from('A', 'a')
          ->from('B', 'b')
          ->join('b.c', 'c')
          ->join('c.d', 'd');
        {code}

        will generate DQL

        {code}
        ...
          FROM A a
            INNER JOIN c.d d,
          B b
            INNER JOIN b.c c
        ...
        {code}

        but should generate this instead

        {code}
        ...
          FROM A a,
          B b
            INNER JOIN b.c c
            INNER JOIN c.d d
        ...
        {code}

        The DQL parser raises exception

        {code}
        Doctrine\ORM\Query\QueryException: [Semantical Error] line 0, col 61 near '.d d, B': Error: Identification Variable c used in join path expression but was not defined before.
        {code}
        Aigars Gedroics made changes -
        Attachment DDC1757Test.php [ 11176 ]
        Aigars Gedroics made changes -
        Attachment patch-1757.patch [ 11177 ]
        Benjamin Eberlei made changes -
        Status Open [ 1 ] Resolved [ 5 ]
        Fix Version/s 2.3 [ 10185 ]
        Resolution Fixed [ 1 ]
        Benjamin Eberlei made changes -
        Workflow jira [ 13596 ] jira-feedback [ 15306 ]
        Benjamin Eberlei made changes -
        Workflow jira-feedback [ 15306 ] jira-feedback2 [ 17170 ]
        Benjamin Eberlei made changes -
        Workflow jira-feedback2 [ 17170 ] jira-feedback3 [ 19424 ]

          People

          • Assignee:
            Benjamin Eberlei
            Reporter:
            Aigars Gedroics
          • Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved: