У меня есть объект Item
, который имеет отношение ManyToOne
к объекту Category
. Я хочу, чтобы к ним присоединилось поле, отличное от категории id
(в данном случае это поле называется id2
). Моя схема указана ниже.
class Item {
/**
* @ORM\Id
* @ORM\Column(name = "id", type = "integer")
* @ORM\GeneratedValue(strategy = "AUTO")
*/
protected $id;
/**
* @ORM\ManyToOne(targetEntity = "Category")
* @ORM\JoinColumn(name = "category_id", referencedColumnName = "id2")
*/
protected $category;
}
class Category {
/**
* @ORM\Id
* @ORM\Column(name = "id", type = "integer")
* @ORM\GeneratedValue(strategy = "AUTO")
*/
protected $id;
/**
* @ORM\Column(name = "id2", type = "string", length = "255", unique = "true")
*/
protected $id2;
Когда я пытаюсь сохранить Item
, я получаю эту ошибку:
Примечание: неопределенный индекс: id2 в строке vendor / doctrine / lib / Doctrine / ORM / Persisters / BasicEntityPersister.php 511
Конечно, если я поменяю id2
на id
в аннотации JoinColumn
, все работает нормально, но мне нужно, чтобы сущности были связаны через id2
. Это возможно?
Редактировать
То, чего я хочу достичь, невозможно в соответствии с официальной Доктриной 2 документа.
Невозможно использовать столбцы соединения, указывающие на неосновные ключи.
Доктрина будет думать, что это первичные ключи и создает ленивую загрузку
прокси с данными, которые могут привести к неожиданным результатам. доктрина
может из соображений производительности не подтвердить правильность этого
настройки во время выполнения, но только с помощью команды Validate Schema.
source: http://www.doctrine -project.org / docs / orm / 2.1 / en / reference / sizes-and-known-questions.html