Можно ли ссылаться на столбец, отличный от id, для JoinColumn?

У меня есть сущность 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;

Когда я пытаюсь сохранить элемент , я получаю следующую ошибку:

Примечание: неопределенный индекс: id2 в vendor / doctrine / lib / Doctrine / ORM / Persisters / BasicEntityPersister.php, строка 511

Конечно, если я изменю id2 на id в аннотации JoinColumn , все будет работать нормально, но мне нужно, чтобы объекты были подключены через id2 . Возможно ли это?

Edit
То, что я хочу достичь, невозможно согласно официальной документации Doctrine 2.

Невозможно использовать столбцы соединения, указывающие на непервичные ключи. Doctrine будет думать, что это первичные ключи, и создаст ленивую загрузку. прокси с данными, что может привести к неожиданным результатам. Доктрина может по причинам производительности не подтверждать правильность этого настройки во время выполнения, но только с помощью команды Проверить схему.

источник: https://www.doctrine-project.org/projects/doctrine-orm/en/2.6/reference/limitations-and-known-issues.html#join-columns-with-non- первичные ключи

18
задан Thomas Landauer 8 September 2019 в 16:45
поделиться