У меня есть простой запрос с внутренним соединениемSymfony ORM доктрины запросов
$qb = $this->createQueryBuilder('r')
->innerJoin('UserBundle:User', 'u')
->where('r.nick = u.id')
->andWhere('r.odobera=:id')
->setParameter('id', $id)
->orderBy('r.time', 'DESC')
->setMaxResults(50);
return $qb->getQuery()->getResult();
Он должен быть один правильный запрос? Но в профилировщике у меня есть
SELECT t0.username AS [...] FROM users t0 WHERE t0.id = ? LIMIT 1
Parameters: [1465]
[Display runnable query]
Time: 1.79 ms [ Explain query ]
SELECT r0_.id AS id0, [...] FROM requests r0_ INNER [...] ORDER BY r0_.time DESC LIMIT 50
Parameters: [1465]
[Display runnable query]
Time: 0.67 ms [ Explain query ]
SELECT t0.username AS username1, [...] FROM users t0 WHERE t0.id = ?
Parameters: ['2072']
[Display runnable query]
Time: 0.64 ms [ Explain query ]
SELECT t0.username AS username1, [...] FROM users t0 WHERE t0.id = ?
Parameters: ['2386']
[Display runnable query]
Time: 0.50 ms [ Explain query ]
SELECT t0.username AS username1, [...] FROM users t0 WHERE t0.id = ?
Parameters: ['79']
[Display runnable query]
Time: 0.50 ms [ Explain query ]
SELECT t0.username AS username1, [...] FROM users t0 WHERE t0.id = ?
Parameters: ['2432']
[Display runnable query]
Time: 0.50 ms [ Explain query ]
SELECT t0.username AS username1, [...] FROM users t0 WHERE t0.id = ?
Parameters: ['40']
[Display runnable query]
Time: 0.52 ms [ Explain query ]
SELECT t0.username AS username1, [...] FROM users t0 WHERE t0.id = ?
Parameters: ['2090']
[Display runnable query]
Time: 0.46 ms [ Explain query ]
SELECT t0.username AS username1, [...] FROM users t0 WHERE t0.id = ?
Parameters: ['1044']
[Display runnable query]
Time: 0.51 ms [ Explain query ]
SELECT t0.username AS username1, [...] FROM users t0 WHERE t0.id = ?
Parameters: ['27']
[Display runnable query]
Time: 0.54 ms [ Explain query ]
один запрос для каждого «соединения» для каждой записи ... ПОЧЕМУ?
PS: этот текст только для того, чтобы сделать это сообщение дольше, потому что я не могу отправить вопрос с «просто» так много деталей .. но я думаю, что моя проблема объясняется очень хорошо. BTW: я спросил друга, и у него есть аналогичная проблема)
гм ... это вызывает у меня проблемы ... не Symfony догадки выбрать на основе отношений в сущностях? Потому что теперь дамп результата выглядит хорошо .. запрашивает объект с свойством nick, который является прокси для пользовательского объекта ... но когда я добавляю вашу часть кода, он выглядит странно, и я не могу передать результаты на ветку и получить к ним доступ, как для последователя в последователях или что-то в этом роде ... check screen: http://www.upnito.sk/0/5u5ztfusawxq5pk7uab7f3e49sr9h534.png – EnchanterIO
Symfony не имеет к этому никакого отношения. Это чисто доктрина. Я обновил свой ответ, так как изначально я ошибся в том, как вы должны указывать поля, которые вы хотите выбрать. –
тот же результат – EnchanterIO