#doctrine-orm
#doctrine-orm
Вопрос:
Я использую Symfony 5, и у меня вопрос о получении данных из базы данных с использованием внешнего ключа.
У меня есть объект User и объект AdditionalInfo, который имеет отношение 1: 1 к User, хотя на самом деле не у всех пользователей будет AdditionalInfo. В объекте AdditionalInfo есть поле пользователя:
/**
* @ORMOneToOne(targetEntity=User::class, inversedBy="AddInfo", cascade={"persist", "remove"})
* @ORMJoinColumn(nullable=false)
*/
private $user;
В базе данных это сохранено как
В моем контроллере у меня есть текущий пользователь, и я пытаюсь получить доступ к записи AdditionalInfo для этого пользователя с помощью:
$user = $this->getUser();
$userId = $user->getId();
$aI= new AdditionalInfo();
$aI= $this->getDoctrine()
->getRepository(AdditionalInfo::class)
->findOneBy(['user' => '$userId']);
Это возвращает правильный идентификатор пользователя, но возвращает null. Это также равно нулю, если я попытаюсь -> findOneBy([‘user’ => ‘$user’])
Я был бы очень благодарен за любые предложения. Мне интересно, нужно ли мне начинать пытаться изменить репозиторий…
Комментарии:
1. не могли бы вы предоставить пользовательскую часть отношений?
2. /** * @ORMOneToOne(targetEntity=PtNarrative::class, mappedBy=»user», cascade={«persist», «remove»}) */ private $addInfo;
3. Не заключайте в кавычки
$userId
.
Ответ №1:
Я нашел способ сделать это:
$aI= $this->getDoctrine()
->getRepository(AdditionalInfo::class)
->findOneByUser($user);
Я не знал, что метод findOneByUser был создан автоматически, это действительно полезно.