В настоящее время я следую учебному пособию по Symfony и дошел до двунаправленных отношений Doctrine (извините, если используемые мной термины неверны, я не являюсь носителем английского языка). Моя модель основана на объявлении (один-ко-многим), которое отображает массив приложений (многие-к-одному), созданных для этой рекламы. Таким образом, приложение должно быть связано с рекламой, следовательно, nullable 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 --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
.
Есть идеи, почему это происходит и может ли это вызвать ошибку позже в моем проекте? Дайте мне знать, если вам нужно больше кусков кода, чтобы понять проблему.