@CenterJoin

Ошибка в отношении OneToOne?

Не получается создать отношение OneToOne в Doctrine
Вот мой пример:
class User {
...
     /**
     * @ORM\Column(type="string", length=100)
     * @ORM\OneToOne(targetEntity="UserData", mappedBy="user_email")
     */
    private $email;
...
    /**
     * @return string|null
     */
    public function getEmail(): ?string
    {
        return $this->email;
    }

    /**
     * @param string $email
     *
     * @return User
     */
    public function setEmail(string $email): self
    {
        $this->email = $email;

        return $this;
    }
}
class UserData {
...
     /**
     * @ORM\OneToOne(targetEntity="User", inversedBy="email")
     * @ORM\JoinColumn(name="id_user", referencedColumnName="id", onDelete="CASCADE")
     */
    private $user_email;
...
    /**
     * @return mixed
     */
    public function getEmail()
    {
        return $this->user_email;
    }
}

UserDataRepository:
public function findUserById(int $userId)
    {
        $entityManager = $this->getEntityManager();

        $query = $entityManager->createQuery(
            'SELECT ud, u.email as user_email, u.login as user_login
                  FROM App\Entity\UserData ud
                    LEFT JOIN App\Entity\User u WITH ud.id_user = u.id
                  WHERE ud.id_user = :userId'
        )->setParameter('userId', $userId);

        return $query->getOneOrNullResult();
    }


Но результат говорит Notice: Undefined index: email
  • Вопрос задан
  • 64 просмотра
Пригласить эксперта
Ответы на вопрос 1
@sl0
Конечно не получается. Для начала стоит определиться с тем, что такое $email - строка или ссылка на UserData.
Затем подумать насчет того, что же должно быть в $user_email.

И ознакомиться с документацией никогда не будет лишним.

ps Если совсем просто - OneToOne связывает две сущности через поля, а не сами поля.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы