Параметр type атрибута Column
Параметр type атрибута Column указывает Doctrine,
в колонку какого типа в базе данных сохранять значение свойства
сущности. Атрибут Column вешается на свойство класса-сущности.
Значением параметра type выступает строка с именем типа Doctrine,
например 'string', 'integer', 'text', 'boolean'
или 'datetime'. Если параметр не указан, Doctrine пытается
определить тип автоматически по типу PHP-свойства.
Синтаксис
#[Column(type: 'string', length: 255)]
Пример
Давайте создадим сущность Article с колонкой типа 'string':
<?php
namespace AppEntity;
use DoctrineORMMapping as ORM;
#[ORMEntity]
class Article
{
#[ORMId]
#[ORMGeneratedValue]
#[ORMColumn(type: 'integer')]
private ?int $id = null;
#[ORMColumn(type: 'string', length: 255)]
private string $title;
public function getTitle(): string
{
return $this->title;
}
public function setTitle(string $title): self
{
$this->title = $title;
return $this;
}
}
?>
Теперь свойство title будет храниться в колонке типа
VARCHAR(255). Результат создания таблицы:
CREATE TABLE article (
id INT AUTO_INCREMENT NOT NULL,
title VARCHAR(255) NOT NULL,
PRIMARY KEY(id)
)
Пример
Давайте используем тип 'text' для длинного содержимого статьи:
<?php
namespace AppEntity;
use DoctrineORMMapping as ORM;
#[ORMEntity]
class Article
{
#[ORMId]
#[ORMGeneratedValue]
#[ORMColumn(type: 'integer')]
private ?int $id = null;
#[ORMColumn(type: 'text')]
private string $content;
public function getContent(): string
{
return $this->content;
}
public function setContent(string $content): self
{
$this->content = $content;
return $this;
}
}
?>
Свойство content будет храниться в колонке типа TEXT.
Результат создания таблицы:
CREATE TABLE article (
id INT AUTO_INCREMENT NOT NULL,
content LONGTEXT NOT NULL,
PRIMARY KEY(id)
)
Пример
Давайте применим тип 'boolean' для флага публикации:
<?php
namespace AppEntity;
use DoctrineORMMapping as ORM;
#[ORMEntity]
class Article
{
#[ORMId]
#[ORMGeneratedValue]
#[ORMColumn(type: 'integer')]
private ?int $id = null;
#[ORMColumn(type: 'boolean')]
private bool $published = false;
public function isPublished(): bool
{
return $this->published;
}
public function setPublished(bool $published): self
{
$this->published = $published;
return $this;
}
}
?>
Свойство published будет храниться в колонке типа TINYINT(1).
Результат создания таблицы:
CREATE TABLE article (
id INT AUTO_INCREMENT NOT NULL,
published TINYINT(1) NOT NULL,
PRIMARY KEY(id)
)
Пример
Давайте используем тип 'datetime' для даты создания:
<?php
namespace AppEntity;
use DoctrineORMMapping as ORM;
#[ORMEntity]
class Article
{
#[ORMId]
#[ORMGeneratedValue]
#[ORMColumn(type: 'integer')]
private ?int $id = null;
#[ORMColumn(type: 'datetime')]
private DateTimeInterface $createdAt;
public function getCreatedAt(): DateTimeInterface
{
return $this->createdAt;
}
public function setCreatedAt(DateTimeInterface $createdAt): self
{
$this->createdAt = $createdAt;
return $this;
}
}
?>
Свойство createdAt будет храниться в колонке типа DATETIME.
Результат создания таблицы:
CREATE TABLE article (
id INT AUTO_INCREMENT NOT NULL,
created_at DATETIME NOT NULL,
PRIMARY KEY(id)
)