В чем разница между JOIN ON и JOIN WITH в Doctrine2?
В мануале не нашел подходящей информации.
В чем разница между JOIN ON и JOIN WITH в Doctrine2?
В мануале не нашел подходящей информации.
ON
заменяет исходное условие соединения,WITH
добавляет к нему условие.
Пример:
[Album] ---OneToMany---> [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
Случай второй
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
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