У меня проблема с присоединением к доктрине 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» и наоборот.
Кто-нибудь может мне помочь?
… Также: удалите аннотацию JoinColumn и атрибут name в аннотации Column, они избыточны.
Спасибо @Richard и @lxg! но если я удалю @ORM \ Column, появится ошибка первичного ключа «Каждая сущность должна иметь идентификатор / первичный ключ». в PosterCategorie.
Вам нужно добавить столбец id, см. knpuniversity.com/screencast/symfony3-doctrine/entity-class
Но я не понял, что в PosterCategorie есть первичный ключ, потому что это idPosterCategoria, и я вижу в таблице. Объявлено с помощью * @ORM \ Id * @ORM \ GeneratedValue (strategy = "AUTO")
Ваш первичный ключ не может одновременно быть отношением ManyToOne. У вас есть идентификатор в качестве первичного ключа и отношение ManyToOne, как описано здесь: symfony.com/doc/current/doctrine/associations.html
хорошо, отлично, работает! Спасибо вам большое !!






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