Поле binary
Поле binary в Doctrine ORM предназначено
для хранения бинарных данных, таких как изображения,
файлы или зашифрованные строки. Оно соответствует
типу BINARY или VARBINARY в базе
данных. Первым параметром передаётся имя поля,
вторым - массив опций.
Синтаксис
#[ORM\Column(type: 'binary', options: [])]
Пример
Давайте создадим сущность с полем binary
для хранения бинарных данных:
<?php
namespace App\Entity;
use Doctrine\ORM\Mapping as ORM;
#[ORM\Entity]
class Article
{
#[ORM\Id]
#[ORM\GeneratedValue]
#[ORM\Column(type: 'integer')]
private int $id;
#[ORM\Column(type: 'binary')]
private string $data;
public function getId(): int
{
return $this->id;
}
public function getData(): string
{
return $this->data;
}
public function setData(string $data): self
{
$this->data = $data;
return $this;
}
}
?>
Пример
Давайте запишем бинарные данные в поле
data и прочитаем их обратно:
<?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_index')]
public function index(EntityManagerInterface $em): Response
{
$article = new Article();
$article->setData('abcde');
$em->persist($article);
$em->flush();
$res = $article->getData();
return new Response($res);
}
}
?>
Результат выполнения кода:
"abcde"
Пример
Давайте сохраним бинарные данные из файла:
<?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/file', name: 'article_file')]
public function file(EntityManagerInterface $em): Response
{
$content = file_get_contents('upload/file.bin');
$article = new Article();
$article->setData($content);
$em->persist($article);
$em->flush();
$res = $article->getData();
return new Response($res);
}
}
?>
Результат выполнения кода для файла с содержимым
'hello':
"hello"