Symfony &引用;make:实体——重新生成;创建不正确的(?)函数

Symfony &引用;make:实体——重新生成;创建不正确的(?)函数,symfony,orm,doctrine-orm,doctrine,symfony4,Symfony,Orm,Doctrine Orm,Doctrine,Symfony4,我目前正在学习Symfony教程,我已经进入了双向关系部分(如果我使用的术语是错误的,很抱歉,我不是以英语为母语的人)。我的模型是基于一个广告(一对多)的,它显示了一系列针对该广告的应用程序(多对一)。因此,应用程序必须链接到广告,因此可空false: class Application { /** * @ORM\ManyToOne(targetEntity="App\Entity\Advert", inversedBy="applications") * @ORM\

我目前正在学习Symfony教程,我已经进入了双向关系部分(如果我使用的术语是错误的,很抱歉,我不是以英语为母语的人)。我的模型是基于一个广告(一对多)的,它显示了一系列针对该广告的应用程序(多对一)。因此,应用程序必须链接到广告,因此
可空false

class Application
{
    /**
     * @ORM\ManyToOne(targetEntity="App\Entity\Advert", inversedBy="applications")
     * @ORM\JoinColumn(nullable=false)
     */
    private $advert;

    //
}
我在我的广告类中添加了一个
$applications
属性:

class Advert
{ 
    /**
     * @ORM\OneToMany(targetEntity="App\Entity\Application", mappedBy="advert")
     */
    private $applications;

    //
}
但是当我使用
php-bin/console-make:entity--regenate
来获得
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
属性


你知道为什么会发生这种情况,以及它是否会在我的项目中导致错误吗?如果您需要更多的代码来理解问题,请告诉我。

这在我看来确实是一个bug,它们可能无法处理生成器内部的可为null的情况

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

class Advert
{ 
    /**
     * @ORM\OneToMany(targetEntity="App\Entity\Application", mappedBy="advert", orphanRemoval=true)
     */
    private $applications;
}

在我看来,这真的像一个bug,它们可能不处理生成器内部的可为null的情况

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

class Advert
{ 
    /**
     * @ORM\OneToMany(targetEntity="App\Entity\Application", mappedBy="advert", orphanRemoval=true)
     */
    private $applications;
}

在我看来,它像一只虫子。你应该在github上创建一个问题:我觉得它像个bug。您应该在github上创建一个问题:当OrphanRemove设置为true时重新生成将输出完全相同的removeApplication()functionOk然后他们在创建生成器时真的没有考虑到这种情况。我仍在等待我在Github上创建的问题的答案,但是的,这可能就是将孤儿移除设置为true时生成的结果,输出完全相同的removeApplication()functionOk然后他们在创建生成器时真的没有考虑到这个问题。我仍然在等待我在Github上创建的问题的答案,但是的,这可能就是发生的事情