У меня есть
User {
...
/**
* @var Country
*
* @ORM\ManyToOne(targetEntity="App\Entity\PersistenceModel\Country")
*/
private $country;
}
Я не совсем понимаю, как загружаются эти отношения:
ВОПРОС : как указано в документации Doctrine, типом извлечения отношений по умолчанию является Lazy. Это означает, что я должен ожидать второй запрос при запросе соответствующего элемента (в данном случае Страна).
Тем не менее, я никогда не вижу этот второй запрос в моем журнале sql (даже если я делаю $user->getCountry()->getName()
или $user->getCountry()
), и вместо этого я вижу только запрос ниже. Как ни странно, моя сущность User имеет все данные без какого-либо очевидного второго запроса, и единственный запрос, который я вижу, не использует JOIN. Как это возможно?
SELECT
t0.id AS id_1,
t0.name AS name_2, ...
t0.country_id AS country_id_7
FROM user t0
WHERE t0.name = '....'
LIMIT 1
Чтобы убедиться в отсутствии проблем с моей конфигурацией журнала sql, я также использовал код php:
$this->em->getConnection()
->getConfiguration()
->setSQLLogger(new \Doctrine\DBAL\Logging\EchoSQLLogger())
;
При этом отображался тот же (и УНИКАЛЬНЫЙ) запрос, который я разместил выше