Поле bigint
Поле bigint создаёт в базе данных колонку
типа BIGINT, которая хранит целые числа
диапазоном от -9223372036854775808
до 9223372036854775807. Оно используется,
когда значений поля integer не хватает,
например для идентификаторов, счётчиков
просмотров или больших числовых показателей.
Первым параметром передаётся имя поля,
вторым - массив опций.
Синтаксис
#[ORM\Column(type: 'bigint', options: [])]
Пример
Давайте создадим сущность Article с полем
views типа bigint:
<?php
namespace App\Entity;
use App\Repository\ArticleRepository;
use Doctrine\ORM\Mapping as ORM;
#[ORM\Entity(repositoryClass: ArticleRepository::class)]
class Article
{
#[ORM\Id]
#[ORM\GeneratedValue]
#[ORM\Column(type: 'integer')]
private ?int $id = null;
#[ORM\Column(type: 'string', length: 255)]
private string $title;
#[ORM\Column(type: 'bigint')]
private int $views;
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;
}
public function getViews(): int
{
return $this->views;
}
public function setViews(int $views): self
{
$this->views = $views;
return $this;
}
}
?>
Пример
Давайте создадим запись и сохраним большое
число в поле views:
<?php
namespace App\Controller;
use App\Entity\Article;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route;
class ArticleController extends AbstractController
{
#[Route('/article', name: 'article_create')]
public function create(EntityManagerInterface $em): Response
{
$article = new Article();
$article->setTitle('article');
$article->setViews(9223372036854775807);
$em->persist($article);
$em->flush();
return new Response('saved: ' . $article->getViews());
}
}
?>
Результат выполнения кода:
"saved: 9223372036854775807"
Пример
Давайте выведем все статьи с их значениями
поля views:
<?php
namespace App\Controller;
use App\Entity\Article;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route;
class ArticleController extends AbstractController
{
#[Route('/articles', name: 'article_list')]
public function list(EntityManagerInterface $em): Response
{
$res = $em->getRepository(Article::class)->findAll();
$out = [];
foreach ($res as $article) {
$out[] = $article->getTitle() . ': ' . $article->getViews();
}
return new Response(implode(', ', $out));
}
}
?>
Результат выполнения кода:
"article: 9223372036854775807"