У меня есть две модели, которые имеют отношение ко многим. ID не управляется доктриной, а управляется генератором GUID из другого приложения. Таким образом, у моих сущностей есть поле с именем uniqueIdentifier
, а не id
. Таким образом:
class Bar {
/**
* @ManyToMany(targetEntity="Foo", mappedBy="bar")
*/
private $foo;
}
class Foo {
/**
* @ManyToMany(targetEntity="Bar", mappedBy="foo")
*/
private $bar;
}
Я получаю сообщение об ошибке Column name 'id' referenced for relation from App\Entity\Foo towards App\Entity\Bar does not exist
. Что я знаю, так это из-за того, что доктрина по умолчанию отображает вещи в _id
для имени ссылочного столбца и table1_table2
для объединяемых таблиц.
Я не могу переопределить значение по умолчанию, потому что в некоторых моделях сгенерировано автоматическизначения и полагаться на поле id
. Вместо этого я хотел бы сделать что-то вроде следующего:
class Bar {
/**
* @ManyToMany(targetEntity="Foo", mappedBy="bar")
* @JoinColumn(name="foo_uid", referencedColumnName="uniqueIdentifier")
*/
private $foo;
}
class Foo {
/**
* @ManyToMany(targetEntity="Bar", mappedBy="foo")
* @JoinColumn(name="bar_uid", referencedColumnName="uniqueIdentifier")
*/
private $bar;
}
Это не работает, и я получаю ту же ошибку. Как это сделать?