Symfony запрашивает базу данных с использованием внешнего ключа

#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 был создан автоматически, это действительно полезно.