Атрибут Table
Атрибут Table вешается на класс
Doctrine-сущности и задаёт имя таблицы
в базе данных. Первым параметром передаётся
имя таблицы. Без этого атрибута Doctrine
формирует имя таблицы автоматически
из имени класса.
Синтаксис
#[Table(name: table_name)]
Пример
Давайте создадим сущность Article
и укажем для неё таблицу 'articles':
<?php
namespace AppEntity;
use DoctrineORMMapping as ORM;
#[ORMEntity]
#[ORMTable(name: 'articles')]
class Article
{
#[ORMId]
#[ORMGeneratedValue]
#[ORMColumn(type: 'integer')]
private ?int $id = null;
#[ORMColumn(type: 'string', length: 255)]
private string $title;
public function getId(): ?int
{
return $this->id;
}
public function getTitle(): string
{
return $this->title;
}
public function setTitle(string $title): self
{
$this->title = $title;
return $this;
}
}
?>
Теперь Doctrine будет хранить записи этой сущности
в таблице articles, а не в article.
Пример
Давайте укажем схему и имя таблицы
для сущности User:
<?php
namespace AppEntity;
use DoctrineORMMapping as ORM;
#[ORMEntity]
#[ORMTable(name: 'app_users', schema: 'public')]
class User
{
#[ORMId]
#[ORMGeneratedValue]
#[ORMColumn(type: 'integer')]
private ?int $id = null;
#[ORMColumn(type: 'string', length: 255)]
private string $name;
public function getId(): ?int
{
return $this->id;
}
public function getName(): string
{
return $this->name;
}
public function setName(string $name): self
{
$this->name = $name;
return $this;
}
}
?>
Теперь таблица будет создана в схеме public
под именем app_users.
Пример
Давайте создадим таблицу и применим схему через консоль:
php bin/console doctrine:schema:update --force
Результат выполнения команды:
"Updating database schema... Database schema updated successfully!"
Смотрите также
-
атрибут
Entity,
который помечает класс как Doctrine-сущность -
атрибут
Id,
который помечает поле как первичный ключ -
атрибут
GeneratedValue,
который задаёт автоинкремент для поля -
атрибут
UniqueConstraint,
который задаёт уникальные ограничения таблицы