在我正在研究的项目中,我们仅将教义用作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
,因为正确的名称只是'所有者'。
[我尝试在@JoinColumn批注中将name
和referencedColumnName
都设置为"owner"
,但无论如何都会附加_id
后缀。
我也看过naming strategies,但它似乎并不负责_id
后缀(我使用的是symfony4随附的默认UnderscoreNamingStrategy
)
反正有没有将学说配置为not添加'_id'后缀?
PS:不能更改列名]
谢谢
[name
正是为此而设计的,当您使用它时,原则应正确映射。
现在,您在这里提到->find('id')
似乎很尴尬。
如果您有表A,并且您希望基于该表的id
查找内容是在使用->find($id)
时,它将查找该表的ID。
但是您正在谈论一种关系,在这种情况下,您应该使用findBy(['field' => $value])
或findOneBy(['field' => $value])
。
如果没有此帮助,您能否显示正在使用的确切查询以及关系的两侧?