В проекте, над которым я работаю, мы используем доктрину только как ORM, что означает, что мы не используем миграции доктрин.Я пытаюсь сопоставить столбец (из существующей таблицы), который имеет ассоциацию OneToMany, например:
/**
* @var InternalUser
* @ORM\ManyToOne(targetEntity="App\Entity\InternalUser", inversedBy="blocos")
* @ORM\JoinColumn(nullable=false, name="owner")
*/
private $owner;
Проблема в том, что имя столбца имеет значение только owner
, а не owner_id
, но при запросебаза данных, используя, например, ->find('id')
, доктрина добавляет суффикс _id
к имени столбца, генерируя запрос, который выглядит следующим образом:
SELECT .... t0.owner_id AS owner_id_6 FROM ...
И когда запрос выполняется, я получаю Undefined column: 7 ERROR: column t0.owner_id does not exist
потому что правильное имя просто «владелец».
Я пытался установить name
и referencedColumnName
в "owner"
в аннотации @JoinColumn, но в любом случае он добавляет суффикс _id
.
Я также рассмотрел стратегий именования , но, похоже, он не отвечает за суффикс _id
(я использую UnderscoreNamingStrategy
по умолчанию, поставляемый с symfony4)
Есть ли способ настроить доктрину для , а не добавить суффикс '_id'?
PS: изменение имени столбца недоступно
Спасибо