Эта проблема возникла из-за конфликта с таблицей соединений, определенной в аннотации класса ассоциации, и таблицей соединений, определенной в аннотации ManyToMany.
Определения сопоставления в двух объектах с прямым отношением ManytoMany, по-видимому, привели к автоматическому созданию таблицы объединения с использованием аннотации joinTable. Однако таблица соединения уже была определена аннотацией в базовом классе сущности, и я хотел, чтобы она использовала собственные определения полей этого класса сущности ассоциации, чтобы расширить таблицу соединения дополнительными настраиваемыми полями.
Объяснение и решение было благодаря этому сообщению на форуме ' Doctrine Annotation Question '. Этот пост привлекает внимание к документации Доктрины, касающейся однонаправленных связей ManyToMany . Посмотрите на примечание, касающееся подхода использования «класса сущностей ассоциации», таким образом заменяя отображение аннотации «многие ко многим» непосредственно между двумя основными классами сущностей аннотацией «один ко многим» в основных классах сущностей и двумя «многими к» -одно »аннотации в классе« Ассоциативная сущность ». В этом сообщении на форуме есть пример Ассоциация моделей с дополнительными полями :
public class Person
{
/**
* @OneToMany(targetEntity="AssignedItems", mappedBy="person")
*/
private $assignedItems;
}
public class Items
{
/**
* @OneToMany(targetEntity="AssignedItems", mappedBy="item")
*/
private $assignedPeople;
}
public class AssignedItems
{
/**
* @ManyToOne(targetEntity="Person")
* @JoinColumn(name="person_id", referencedColumnName="id")
*/
private $person;
/**
* @ManyToOne(targetEntity="Item")
* @JoinColumn(name="item_id", referencedColumnName="id")
*/
private $item;
}