В чем разница между JOIN ON и JOIN WITH в Doctrine2?

В чем разница между JOIN ON и JOIN WITH в Doctrine2?

В мануале не нашел подходящей информации.


person Trent    schedule 30.10.2012    source источник


Ответы (1)


ON заменяет исходное условие соединения,
WITH добавляет к нему условие.


Пример:

[Album] ---OneToMany---> [Track]
  1. Случай первый

    DQL

    FROM Album a LEFT JOIN a.Track t WITH t.status = 1
    

    Переведет на SQL

    FROM Album a LEFT JOIN Track t ON t.album_id = a.id AND t.status = 1
    
  2. Случай второй

    DQL

    FROM Album a LEFT JOIN a.Track t ON t.status = 1
    

    Переведет на SQL

    FROM Album a LEFT JOIN Track t ON t.status = 1
    
person theredled    schedule 30.10.2012
comment
Спасибо за ваш ответ, но я не очень понимаю вашу точку зрения, можете ли вы привести мне пример? - person Trent; 06.11.2012
comment
Да, скажем, у вас есть таблица Album, связанная с таблицей Track (один ко многим)... В DQL, если вы сделаете FROM Album a LEFT JOIN a.Track t WITH t.status = 1, это будет эквивалентно SQL FROM Album a LEFT JOIN Track t ON t.album_id = a.id AND t.status = 1 Но если вы сделаете FROM Album a LEFT JOIN a.Track t ON t.status = 1, это будет эквивалентно SQL FROM Album a LEFT JOIN Track t ON t.status = 1 , тем самым заменив условие отношения (t.album_id = a.id). Надеюсь, я ясно! - person theredled; 06.11.2012