← Виправлені помилки Doctrine Behaviors
docs: Doctrine section with Doctrine Behaviors and Doctrine Helper (uk + en)
uk/docs/doctrine/doctrine-behaviors/known_issues/fixed.md
новий файл +17
−0
1
+
# Виправлені помилки Doctrine Behaviors
2
+
3
+
Помилки попередніх версій і версія, з якої їх виправлено. Актуальні — на сторінці [Актуальні помилки](/docs/doctrine/doctrine-behaviors/known_issues/open).
4
+
5
+
<include>(.issues/typed-properties-uninitialized.md)
6
+
7
+
---
8
+
9
+
<include>(.issues/security-bundle-undeclared.md)
10
+
11
+
---
12
+
13
+
<include>(.issues/timestampable-uninitialized.md)
14
+
15
+
---
16
+
17
+
<include>(.issues/translatable-merge-cascade.md)
uk/docs/doctrine/doctrine-behaviors/known_issues/.issues/typed-properties-uninitialized.md
новий файл +15
−0
1
+
### `Typed property … must not be accessed before initialization` у Blameable, Sluggable, SoftDeletable, Uuidable
2
+
3
+
:::success subtitle="Виправлено в 2.0.0"
4
+
Зачеплені версії: 1.0.1 — 1.0.4.
5
+
:::
6
+
7
+
**Симптом.** `Error: Typed property App\Entity\X::$… must not be accessed before initialization`:
8
+
9
+
* Sluggable, Uuidable — при `persist()` нової сутності (`generateSlug()`, `generateUuid()`);
10
+
* Blameable — при `persist()` нової сутності, коли є користувач (`getCreatedBy()`), при `remove()` (`getDeletedBy()`), а також для завантажених сутностей із `NULL` у колонці;
11
+
* SoftDeletable — `isDeleted()` / `getDeletedAt()` нової сутності.
12
+
13
+
**Причина.** У 1.0.1 властивості трейтів стали типізованими без значень за замовчуванням (`protected string $slug;`, `protected UuidInterface|string|null $uuid;` тощо), а методи читали їх до ініціалізації.
14
+
15
+
**Виправлення.** У 2.0.0 властивості отримали значення за замовчуванням (`null`, для `slug` — `''`), Blameable — nullable-тип. На 1.0.x для Sluggable, Uuidable і SoftDeletable можна ініціалізувати властивості в конструкторі сутності (`$this->slug = ''`, `$this->uuid = null`, `$this->deletedAt = null`); для Blameable — підключити `BlameableMethodsTrait` і оголосити `createdBy` / `updatedBy` / `deletedBy` самостійно з nullable-типом.
uk/docs/doctrine/doctrine-behaviors/known_issues/.issues/security-bundle-undeclared.md
новий файл +11
−0
1
+
### Пакет не оголошував залежність від `symfony/security-bundle`
2
+
3
+
:::success subtitle="Виправлено в 2.0.0"
4
+
Зачеплені версії: 1.0.0 — 1.0.4.
5
+
:::
6
+
7
+
**Симптом.** У застосунку без `symfony/security-bundle` контейнер не збирається: сервіс `Ufo\DoctrineBehaviors\Provider\UserProvider` не вдається автовайрити.
8
+
9
+
**Причина.** `UserProvider` залежить від `Symfony\Bundle\SecurityBundle\Security`, а `composer.json` вимагав лише `symfony/security-core`.
10
+
11
+
**Виправлення.** У 2.0.0 `symfony/security-bundle` додано в `require`. На 1.0.x — встановіть його в застосунок.
uk/docs/doctrine/doctrine-behaviors/known_issues/.issues/timestampable-uninitialized.md
новий файл +11
−0
1
+
### Timestampable: помилка при збереженні нової сутності
2
+
3
+
:::success subtitle="Виправлено в 1.0.3"
4
+
Зачеплені версії: 1.0.1 — 1.0.2.
5
+
:::
6
+
7
+
**Симптом.** `persist()` + `flush()` нової сутності з `TimestampableTrait` завершується `Error: Typed property …::$createdAt must not be accessed before initialization`.
8
+
9
+
**Причина.** `protected DateTimeInterface $createdAt;` без значення за замовчуванням, а `updateTimestamps()` перевіряє `$this->createdAt === null`.
10
+
11
+
**Виправлення.** Властивості `?DateTimeInterface` зі значенням `null` ([PR #1](https://github.com/UFO-Tech/DoctrineBehaviors/pull/1)).
uk/docs/doctrine/doctrine-behaviors/known_issues/.issues/translatable-merge-cascade.md
новий файл +11
−0
1
+
### Translatable: недопустимий каскад `merge` в ORM 3
2
+
3
+
:::success subtitle="Виправлено в 1.0.2"
4
+
Зачеплені версії: 1.0.0 — 1.0.1.
5
+
:::
6
+
7
+
**Симптом.** Під час завантаження метаданих сутностей з `TranslatableInterface` / `TranslationInterface` Doctrine ORM 3 кидає `MappingException` про недопустиму опцію каскаду `merge`.
8
+
9
+
**Причина.** `TranslatableEventSubscriber` мапив зв'язки `translations` і `translatable` з `cascade: ['persist', 'merge', …]`; в ORM 3 допустимі лише `persist`, `remove`, `refresh`, `detach`.
10
+
11
+
**Виправлення.** Каскад `merge` прибрано.