“制造:实体 - 重生”创建不正确的(?)函数



我目前正在关注Symfony教程,并且我已经进入了Doctrine双向关系的一部分(对不起,如果我使用的术语错了,我不是本地人英语母语者)。我的模型基于一个广告(一对多),该广告显示了对此广告的一系列应用程序(多对一)。因此,必须将应用程序链接到广告,因此nullable false

class Application
{
    /**
     * @ORMManyToOne(targetEntity="AppEntityAdvert", inversedBy="applications")
     * @ORMJoinColumn(nullable=false)
     */
    private $advert;
    //
}

,我在广告类中添加了$applications属性:

class Advert
{ 
    /**
     * @ORMOneToMany(targetEntity="AppEntityApplication", mappedBy="advert")
     */
    private $applications;
    //
}

但是,当我使用php bin/console make:entity --regenerate时,要获取removeApplication()函数,我得到的代码如下:

public function removeApplication(Application $application): self
{
    if ($this->applications->contains($application)) {
        $this->applications->removeElement($application);
        // set the owning side to null (unless already changed)
        if ($application->getAdvert() === $this) {
            $application->setAdvert(null);
        }
    }
    return $this;
}

该函数将应用程序的$advert设置为NULL,而此属性则将其明确设置为nullable = false。我注意到了这种不一致之处,因为我使用的是Symfony 4,而我关注的教程是基于较旧版本的,因此教程中生成的功能更简单,并且没有处理$advert属性。

知道为什么会发生这种情况以及我的项目以后是否可能导致错误?让我知道您是否需要更多代码来理解问题。

对我来说确实是一个错误,它们可能无法处理发电机内部的无效案例。

也许在关系的广告方面尝试orphanremoval,这将很有趣,然后会发生什么:

class Advert
{ 
    /**
     * @ORMOneToMany(targetEntity="AppEntityApplication", mappedBy="advert", orphanRemoval=true)
     */
    private $applications;
}

相关内容

  • 没有找到相关文章

最新更新