docs: Doctrine section with Doctrine Behaviors and Doctrine Helper (uk + en)
uk/docs/doctrine/doctrine-behaviors/uuidable.md
новий файл +34
−0
1
+
# Uuidable
2
+
3
+
Додає сутності UUID версії 4, що генерується при першому збереженні.
4
+
5
+
## Сутність
6
+
7
+
```php
8
+
use Doctrine\ORM\Mapping as ORM;
9
+
use Ufo\DoctrineBehaviors\Contract\Entity\UuidableInterface;
10
+
use Ufo\DoctrineBehaviors\Model\Uuidable\UuidableTrait;
11
+
12
+
#[ORM\Entity]
13
+
class BlogPost implements UuidableInterface
14
+
{
15
+
use UuidableTrait;
16
+
17
+
#[ORM\Id, ORM\GeneratedValue, ORM\Column]
18
+
private ?int $id = null;
19
+
}
20
+
```
21
+
22
+
## Як це працює
23
+
24
+
* Бандл мапить `uuid` як рядкову nullable-колонку. Це додаткове поле, а не первинний ключ — ідентифікатор сутності лишається вашим.
25
+
* На `prePersist` викликається `generateUuid()`: якщо UUID ще немає, створюється `Ramsey\Uuid\Uuid::uuid4()`. Заданий вручну через `setUuid()` не перезаписується.
26
+
* `getUuid()` повертає `Ramsey\Uuid\UuidInterface`, навіть якщо з бази прийшов рядок.
27
+
28
+
```php
29
+
$post = new BlogPost();
30
+
$entityManager->persist($post);
31
+
$entityManager->flush();
32
+
33
+
$post->getUuid()->toString(); // напр. '1ee9aa1b-6510-4105-92b9-7171bb2f3089'
34
+
```