docs: Doctrine section with Doctrine Behaviors and Doctrine Helper (uk + en)
uk/docs/doctrine/doctrine-behaviors/README.md
новий файл +60
−0
1
+
# Doctrine Behaviors
2
+
3
+
:::block class="package-card"
4
+
<include>(docs/doctrine/doctrine-behaviors/.info.md)
5
+
:::
6
+
7
+
Набір поведінок для сутностей Doctrine ORM у Symfony 7 / 8: часові мітки, автор змін, м'яке видалення, переклади, slug, дерева, UUID і журнал змін. Поведінка вмикається інтерфейсом і трейтом на сутності — бандл сам додає потрібні колонки в мапінг і заповнює їх у подіях Doctrine.
8
+
9
+
:::info
10
+
Пакет — форк [KnpLabs/DoctrineBehaviors](https://github.com/KnpLabs/DoctrineBehaviors) (через проміжний форк [Miets/DoctrineBehaviors](https://github.com/Miets/DoctrineBehaviors)). Оригінал не працює з Symfony новіше 6.3 і з DBAL 4; форк UFO-Tech оновлює код під Symfony 7+ / 8, Doctrine ORM 3 і DBAL 4. Ідеї, API і більшість коду — від авторів KnpLabs, ліцензія MIT.
11
+
:::
12
+
13
+
Документація описує версію 2.0.0.
14
+
15
+
## Як це виглядає
16
+
17
+
```php
18
+
use Doctrine\ORM\Mapping as ORM;
19
+
use Ufo\DoctrineBehaviors\Contract\Entity\SoftDeletableInterface;
20
+
use Ufo\DoctrineBehaviors\Contract\Entity\TimestampableInterface;
21
+
use Ufo\DoctrineBehaviors\Model\SoftDeletable\SoftDeletableTrait;
22
+
use Ufo\DoctrineBehaviors\Model\Timestampable\TimestampableTrait;
23
+
24
+
#[ORM\Entity]
25
+
class Article implements TimestampableInterface, SoftDeletableInterface
26
+
{
27
+
use TimestampableTrait;
28
+
use SoftDeletableTrait;
29
+
30
+
#[ORM\Id, ORM\GeneratedValue, ORM\Column]
31
+
private ?int $id = null;
32
+
}
33
+
```
34
+
35
+
Колонки `createdAt`, `updatedAt` і `deletedAt` з'являться в мапінгу без жодного `#[ORM\Column]`; часові мітки заповнюються під час `flush()`, а `$entityManager->remove($article)` лише проставляє `deletedAt`.
36
+
37
+
## Поведінки
38
+
39
+
| Поведінка | Інтерфейс | Трейт | Що додає |
40
+
| --- | --- | --- | --- |
41
+
| [Timestampable](/docs/doctrine/doctrine-behaviors/timestampable) | `TimestampableInterface` | `TimestampableTrait` | `createdAt`, `updatedAt` |
42
+
| [Blameable](/docs/doctrine/doctrine-behaviors/blameable) | `BlameableInterface` | `BlameableTrait` | `createdBy`, `updatedBy`, `deletedBy` |
43
+
| [SoftDeletable](/docs/doctrine/doctrine-behaviors/soft_deletable) | `SoftDeletableInterface` | `SoftDeletableTrait` | `deletedAt`, видалення без `DELETE` |
44
+
| [Translatable](/docs/doctrine/doctrine-behaviors/translatable) | `TranslatableInterface`, `TranslationInterface` | `TranslatableTrait`, `TranslationTrait` | зв'язок із сутністю перекладів, `locale` |
45
+
| [Sluggable](/docs/doctrine/doctrine-behaviors/sluggable) | `SluggableInterface` | `SluggableTrait` | `slug` |
46
+
| [Tree](/docs/doctrine/doctrine-behaviors/tree) | `TreeNodeInterface` | `TreeNodeTrait`, `TreeTrait` (репозиторій) | `materializedPath` |
47
+
| [Uuidable](/docs/doctrine/doctrine-behaviors/uuidable) | `UuidableInterface` | `UuidableTrait` | `uuid` |
48
+
| [Loggable](/docs/doctrine/doctrine-behaviors/loggable) | `LoggableInterface` | `LoggableTrait` | записи в PSR-3 логер |
49
+
50
+
Інтерфейси лежать у `Ufo\DoctrineBehaviors\Contract\Entity`, трейти — у `Ufo\DoctrineBehaviors\Model\<Поведінка>`. Кожен трейт, крім `LoggableTrait`, складається з двох: `...PropertiesTrait` (властивості) і `...MethodsTrait` (методи) — їх можна підключати окремо, якщо властивості потрібно оголосити по-своєму.
51
+
52
+
Колонку бандл додає, лише якщо поле з такою назвою ще не змаплене, тож тип чи довжину можна задати власним мапінгом.
53
+
54
+
## Розділи
55
+
56
+
* [Встановлення](/docs/doctrine/doctrine-behaviors/installation)
57
+
* [Налаштування](/docs/doctrine/doctrine-behaviors/config) — параметри контейнера, власні провайдери користувача й локалі.
58
+
* Поведінки — посилання в таблиці вище.
59
+
* [Історія змін](/docs/doctrine/doctrine-behaviors/change_log)
60
+
* [Відомі помилки](/docs/doctrine/doctrine-behaviors/known_issues/open)
uk/docs/doctrine/doctrine-behaviors/.info.md
новий файл +19
−0
1
+
[](/docs/doctrine/doctrine-behaviors/change_log)
2
+
[](https://packagist.org/packages/ufo-tech/doctrine-behaviors/stats)
3
+
[](https://github.com/UFO-Tech/DoctrineBehaviors)
4
+
5
+
```bash
6
+
composer require ufo-tech/doctrine-behaviors
7
+
```
8
+
9
+
* **PHP** 8.4+
10
+
* **Symfony** 7 · 8
11
+
* **Основа** Doctrine ORM 3.7+ · DBAL 4.2+
12
+
* **Тип** Symfony Bundle
13
+
* **Категорія** Doctrine
14
+
* **Ліцензія** MIT
15
+
16
+
[GitHub](https://github.com/UFO-Tech/DoctrineBehaviors)
17
+
[Packagist](https://packagist.org/packages/ufo-tech/doctrine-behaviors)
18
+
[Історія змін](/docs/doctrine/doctrine-behaviors/change_log)
19
+
[Відомі помилки](/docs/doctrine/doctrine-behaviors/known_issues/open)