Параметр options атрибута Column
Параметр options атрибута Column принимает массив,
в котором можно задать дополнительные настройки для столбца
базы данных. Эти настройки передаются напрямую в драйвер
Doctrine DBAL и позволяют управлять такими вещами, как
комментарии к столбцу, значения по умолчанию на уровне БД,
коллации и другими специфическими опциями.
Параметр не является обязательным. Если он не указан,
используются стандартные настройки, определённые типом поля.
Массив options особенно полезен, когда нужно задать
поведение, которое нельзя выразить через другие параметры
атрибута Column, например length или nullable.
Синтаксис
#[Column(type: type, options: ['key' => 'value'])]
Пример
Давайте создадим сущность Article с полем title
и зададим для него комментарий к столбцу через параметр
options:
<?php
namespace App\Entity;
use Doctrine\ORM\Mapping as ORM;
#[ORM\Entity]
class Article
{
#[ORM\Column(type: 'string', length: 255, options: ['comment' => 'Article title'])]
private string $title;
public function getTitle(): string
{
return $this->title;
}
public function setTitle(string $title): self
{
$this->title = $title;
return $this;
}
}
?>
В результате выполнения миграции столбец title
будет создан с комментарием 'Article title' на уровне
базы данных.
Пример
Давайте зададим значение по умолчанию на уровне базы данных
для поля status:
<?php
namespace App\Entity;
use Doctrine\ORM\Mapping as ORM;
#[ORM\Entity]
class Article
{
#[ORM\Column(type: 'string', length: 50, options: ['default' => 'draft'])]
private string $status = 'draft';
public function getStatus(): string
{
return $this->status;
}
public function setStatus(string $status): self
{
$this->status = $status;
return $this;
}
}
?>
Теперь при вставке записи без указания значения столбец
status получит значение 'draft' на уровне СУБД.
Пример
Давайте передадим несколько настроек одновременно:
коллацию и комментарий для поля code:
<?php
namespace App\Entity;
use Doctrine\ORM\Mapping as ORM;
#[ORM\Entity]
class Article
{
#[ORM\Column(
type: 'string',
length: 10,
options: [
'collation' => 'utf8mb4_unicode_ci',
'comment' => 'Unique article code'
]
)]
private string $code;
public function getCode(): string
{
return $this->code;
}
public function setCode(string $code): self
{
$this->code = $code;
return $this;
}
}
?>
Результат выполнения кода при генерации SQL-запроса:
"CREATE TABLE article (code VARCHAR(10) COLLATE utf8mb4_unicode_ci COMMENT 'Unique article code')"
Смотрите также
-
атрибут
Column,
который описывает столбец сущности -
параметр
type,
который задаёт тип поля -
параметр
length,
который задаёт длину строкового поля -
параметр
columnDefinition,
который задаёт SQL-определение столбца