Параметр name атрибута Column
Параметр name атрибута Column позволяет задать
имя столбца в таблице базы данных, которое будет
отличаться от имени свойства сущности. Это бывает
полезно, когда имя столбца в БД не совпадает с
именем свойства по соглашениям именования или
когда требуется сохранить обратную совместимость
со старой схемой данных.
Синтаксис
#[Column(name: 'column_name')]
Пример
Давайте создадим сущность с полем title,
которое в базе данных будет храниться в столбце
'article_title':
<?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, name: 'article_title')]
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;
}
}
?>
Теперь при работе с сущностью мы используем свойство
title, а в базе данных значение сохраняется
в столбец 'article_title'.
Пример
Давайте сохраним сущность и убедимся, что значение записывается в нужный столбец:
<?php
namespace AppController;
use AppEntityArticle;
use DoctrineORMEntityManagerInterface;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationResponse;
class ArticleController extends AbstractController
{
public function create(EntityManagerInterface $em): Response
{
$article = new Article();
$article->setTitle('hello');
$em->persist($article);
$em->flush();
return new Response('saved');
}
}
?>
Результат выполнения кода:
"saved"
В таблице articles значение 'hello'
будет записано в столбец article_title.
Пример
Давайте используем параметр name вместе
с параметром type для текстового поля:
<?php
namespace AppEntity;
use DoctrineORMMapping as ORM;
#[ORMEntity]
#[ORMTable(name: 'articles')]
class Article
{
#[ORMId]
#[ORMGeneratedValue]
#[ORMColumn(type: 'integer')]
private ?int $id = null;
#[ORMColumn(type: 'text', name: 'article_content')]
private string $content;
public function getId(): ?int
{
return $this->id;
}
public function getContent(): string
{
return $this->content;
}
public function setContent(string $content): self
{
$this->content = $content;
return $this;
}
}
?>
Теперь свойство content хранится в столбце
article_content с типом text.