Я присоединяюсь к нескольким таблицам, и я нашел два решения. Я не могу понять, в чем разница. Может ли кто-нибудь сказать мне?Doctrine join WITH vs WHERE
Решение 1:
$query = $entityManager->createQuery("
SELECT m FROM Model m
JOIN m.battery b
JOIN m.camera c
JOIN m.connectivity co
JOIN m.hardware h
JOIN m.screen s
JOIN m.sensor se
WHERE b = m.battery
AND c = m.camera
AND co = m.connectivity
AND h = m.hardware
AND s = m.screen
AND se = m.sensor"
);
Решение 2:
$query = $entityManager->createQuery("
SELECT m FROM Model m
JOIN m.battery b
WITH m.battery = b
JOIN m.camera c
WITH m.camera = c
JOIN m.connectivity co
WITH m.connectivity = co
JOIN m.hardware h
WITH m.hardware = h
JOIN m.screen s
WITH m.screen = s
JOIN m.sensor se
WITH m.sensor = se
");
Значит, лучше? –
@RobinDijkhof Во внутреннем соединении да, но в внешнем соединении не имеет значения. –
@RobinDijkhof Я думаю, что я ошибся. оптимизатор запросов выбирает лучший способ для соединения, и они могут использовать взаимозаменяемые возможности. прочитайте это http://stackoverflow.com/questions/354070/sql-join-where-clause-vs-on-clause –