Doctrine Join - не имеет названной ассоциации

У меня проблема с присоединением к доктрине Symfony.
У меня есть основная сущность:

class PosterCartelli{
   ...

   /**
    * @var int|null
    *
    * @ORM\Column(name = "id_poster_categoria", type = "integer", nullable=false)
    * @ORM\ManyToOne(targetEntity = "App\Entity\PosterCategorie", inversedBy = "idPosterCategoria")
    * @JoinColumn(name = "id_poster_categoria", referencedColumnName = "id_poster_categoria")
    */
     private $idPosterCategoria;
    ...
 }

И присоединяйтесь к этой сущности:

class PosterCategorie{

  /**
   * @ORM\Id()
   * @ORM\GeneratedValue()
   * @ORM\Column(name = "id_poster_categoria", type = "integer")
   * @ORM\OneToMany(targetEntity = "App\Entity\PosterCartelli", mappedBy = "idPosterCategoria")
   */
    private $idPosterCategoria;
    ...
  }

Мой выбор в PosterCartelliRepository:

 return $this->createQueryBuilder('pc')
        ->andWhere('pc.stato = \'Y\'')
        ->join('pc.idPosterCategoria', 'ipc')
        ->orderBy('pc.numeroCartello', 'ASC')
        ->getQuery()
        ->getResult();

Но у меня всегда одна и та же ошибка: [Семантическая ошибка] строка 0, столбец 76 рядом с 'ipc WHERE pc.stato': Ошибка: класс App \ Entity \ PosterCartelli не имеет ассоциации с именем idPosterCategoria

Я пробовал по-другому, но безуспешно. Я думаю, что все правильно, потому что PosterCartelli.idPosterCagoria объявляет ManyToOne с «IdPosterCategory» и наоборот.

Кто-нибудь может мне помочь?

Удалите строки @ORM \ Column, поскольку они конфликтуют с отношениями @ORM \ OneToMany. Назовите свой объект $ posterCategoria, а не $ idPosterCategoria.

Richard 14.08.2018 15:42

… Также: удалите аннотацию JoinColumn и атрибут name в аннотации Column, они избыточны.

lxg 15.08.2018 12:10

Спасибо @Richard и @lxg! но если я удалю @ORM \ Column, появится ошибка первичного ключа «Каждая сущность должна иметь идентификатор / первичный ключ». в PosterCategorie.

Thunder 17.08.2018 11:59

Вам нужно добавить столбец id, см. knpuniversity.com/screencast/symfony3-doctrine/entity-class

Richard 17.08.2018 12:25

Но я не понял, что в PosterCategorie есть первичный ключ, потому что это idPosterCategoria, и я вижу в таблице. Объявлено с помощью * @ORM \ Id * @ORM \ GeneratedValue (strategy = "AUTO")

Thunder 17.08.2018 13:40

Ваш первичный ключ не может одновременно быть отношением ManyToOne. У вас есть идентификатор в качестве первичного ключа и отношение ManyToOne, как описано здесь: symfony.com/doc/current/doctrine/associations.html

Richard 17.08.2018 15:45

хорошо, отлично, работает! Спасибо вам большое !!

Thunder 19.08.2018 15:30
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
7
328
0

Другие вопросы по теме