当生成以字母“s”结尾的字段的复数方法时,学说会感到困惑


Doctrine get confused when generating plural method of a field that ends with a letter "s"

我有一个名为帐户的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方法是正常的,对于删除给定DnisremoveDni和获取整个Dnis集合的getDnis也是如此。

如果您需要一个帐户可以有一个Dnis,请将其定义为OneToOne并将其保留为复数。你会有一个getDnis()setDnis().

如果您不喜欢变量的名称(即 Dnis $dni ),只需更改它(即 Dnis $dnis )。

编辑

我找到了一种避免这种意外行为的快速方法,并提交了拉取请求。
如果 PR 被合并,我会通知您,现在您可以使用我的修复程序。