Параметр nullable атрибута Column
Параметр nullable атрибута Column
указывает, может ли столбец таблицы хранить
значение NULL. По умолчанию параметр
имеет значение false, то есть столбец
обязателен для заполнения. Если передать
true, то столбец станет необязательным
и будет допускать отсутствие значения.
Синтаксис
#[Column(nullable: true)]
Пример
Давайте создадим сущность Article
с обязательным полем title
и необязательным полем description:
<?php
namespace App\Entity;
use Doctrine\ORM\Mapping as ORM;
#[ORM\Entity]
class Article
{
#[ORM\Id]
#[ORM\GeneratedValue]
#[ORM\Column]
private ?int $id = null;
#[ORM\Column(nullable: false)]
private string $title;
#[ORM\Column(nullable: true)]
private ?string $description = null;
public function setTitle(string $title): self
{
$this->title = $title;
return $this;
}
public function getTitle(): string
{
return $this->title;
}
public function setDescription(?string $description): self
{
$this->description = $description;
return $this;
}
public function getDescription(): ?string
{
return $this->description;
}
}
?>
В результате поле title станет обязательным
столбцом, а description будет допускать
значение NULL.
Пример
Давайте сохраним сущность без описания:
<?php
namespace App\Controller;
use App\Entity\Article;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
class ArticleController extends AbstractController
{
public function create(EntityManagerInterface $em): Response
{
$article = new Article();
$article->setTitle('hello');
$article->setDescription(null);
$em->persist($article);
$em->flush();
return new Response('article saved');
}
}
?>
Результат выполнения кода:
"article saved"
Если же попытаться сохранить сущность без title,
то база данных вернёт ошибку, так как столбец
title объявлен как nullable: false.