docs: Doctrine section with Doctrine Behaviors and Doctrine Helper (uk + en)
uk/docs/doctrine/doctrine-behaviors/README.md
новий файл +60
−0
Doctrine Behaviors
<include>(docs/doctrine/doctrine-behaviors/.info.md)
Набір поведінок для сутностей Doctrine ORM у Symfony 7 / 8: часові мітки, автор змін, м'яке видалення, переклади, slug, дерева, UUID і журнал змін. Поведінка вмикається інтерфейсом і трейтом на сутності — бандл сам додає потрібні колонки в мапінг і заповнює їх у подіях Doctrine.
Пакет — форк KnpLabs/DoctrineBehaviors (через проміжний форк Miets/DoctrineBehaviors). Оригінал не працює з Symfony новіше 6.3 і з DBAL 4; форк UFO-Tech оновлює код під Symfony 7+ / 8, Doctrine ORM 3 і DBAL 4. Ідеї, API і більшість коду — від авторів KnpLabs, ліцензія MIT.
Документація описує версію 2.0.0.
Як це виглядає
use Doctrine\ORM\Mapping as ORM;
use Ufo\DoctrineBehaviors\Contract\Entity\SoftDeletableInterface;
use Ufo\DoctrineBehaviors\Contract\Entity\TimestampableInterface;
use Ufo\DoctrineBehaviors\Model\SoftDeletable\SoftDeletableTrait;
use Ufo\DoctrineBehaviors\Model\Timestampable\TimestampableTrait;
#[ORM\Entity]
class Article implements TimestampableInterface, SoftDeletableInterface
{
use TimestampableTrait;
use SoftDeletableTrait;
#[ORM\Id, ORM\GeneratedValue, ORM\Column]
private ?int $id = null;
}
Колонки createdAt, updatedAt і deletedAt з'являться в мапінгу без жодного #[ORM\Column]; часові мітки заповнюються під час flush(), а $entityManager->remove($article) лише проставляє deletedAt.
Поведінки
| Поведінка | Інтерфейс | Трейт | Що додає |
|---|---|---|---|
| Timestampable | TimestampableInterface |
TimestampableTrait |
createdAt, updatedAt |
| Blameable | BlameableInterface |
BlameableTrait |
createdBy, updatedBy, deletedBy |
| SoftDeletable | SoftDeletableInterface |
SoftDeletableTrait |
deletedAt, видалення без DELETE |
| Translatable | TranslatableInterface, TranslationInterface |
TranslatableTrait, TranslationTrait |
зв'язок із сутністю перекладів, locale |
| Sluggable | SluggableInterface |
SluggableTrait |
slug |
| Tree | TreeNodeInterface |
TreeNodeTrait, TreeTrait (репозиторій) |
materializedPath |
| Uuidable | UuidableInterface |
UuidableTrait |
uuid |
| Loggable | LoggableInterface |
LoggableTrait |
записи в PSR-3 логер |
Інтерфейси лежать у Ufo\DoctrineBehaviors\Contract\Entity, трейти — у Ufo\DoctrineBehaviors\Model\<Поведінка>. Кожен трейт, крім LoggableTrait, складається з двох: ...PropertiesTrait (властивості) і ...MethodsTrait (методи) — їх можна підключати окремо, якщо властивості потрібно оголосити по-своєму.
Колонку бандл додає, лише якщо поле з такою назвою ще не змаплене, тож тип чи довжину можна задати власним мапінгом.
Розділи
- Встановлення
- Налаштування — параметри контейнера, власні провайдери користувача й локалі.
- Поведінки — посилання в таблиці вище.
- Історія змін
- Відомі помилки
uk/docs/doctrine/doctrine-behaviors/.info.md
новий файл +19
−0
composer require ufo-tech/doctrine-behaviors
- PHP 8.4+
- Symfony 7 · 8
- Основа Doctrine ORM 3.7+ · DBAL 4.2+
- Тип Symfony Bundle
- Категорія Doctrine
- Ліцензія MIT