我有一个名为帐户的rntity,它可以有很多电话号码(或Dnis,因为我已经命名了相关的实体)。
使用 yml 的帐户的定义是:
models'Account:
type: entity
table: account
oneToMany:
dnis:
targetEntity: models'Dnis
mappedBy: account
问题是当我使用以下命令生成实体类时:
doctrine orm:generate:entities
由于它是一对多关系,帐户实体有一个 dnis 集合,问题是"add"方法被命名为"addDni"。
/**
* Add dni
*
* @param 'application'models'Dnis $dni
*
* @return CreditAccount
*/
public function addDni('application'models'Dnis $dni)
{
$this->dnis[] = $dni;
return $this;
}
/**
* Remove dni
*
* @param 'application'models'Dnis $dni
*/
public function removeDni('application'models'Dnis $dni)
{
$this->dnis->removeElement($dni);
}
我猜教义会感到困惑,因为它认为属性"dnis"是一个复数,只是因为以字母"s"结尾。
我怎样才能让教义知道"dnis"是财产的实际名称?还是我在实体定义中缺少某些内容?
提前谢谢。
您正在定义OneToMany
关联。
这意味着一个Account
可以有很多Dnis
。
这就是为什么Dnis
被认为是复数,因为它代表了OneToMany
关联的Many
面,而且学说生成一种将给定Dnis
添加到Dnis
集合的addDni
方法是正常的,对于删除给定Dnis
的removeDni
和获取整个Dnis
集合的getDnis
也是如此。
如果您需要一个帐户可以有一个Dnis
,请将其定义为OneToOne
并将其保留为复数。你会有一个getDnis()
和setDnis()
.
如果您不喜欢变量的名称(即 Dnis $dni
),只需更改它(即 Dnis $dnis
)。
编辑
我找到了一种避免这种意外行为的快速方法,并提交了拉取请求。
如果 PR 被合并,我会通知您,现在您可以使用我的修复程序。