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