Fixed issues

← Fixed issues

Ashterix

docs: Doctrine section with Doctrine Behaviors and Doctrine Helper (uk + en)

en/docs/doctrine/doctrine-behaviors/known_issues/fixed.md new file +17 −0

Fixed issues

Bugs from previous versions and the version in which they were fixed. Open issues are on the Open issues page.

<include>(.issues/typed-properties-uninitialized.md)


<include>(.issues/security-bundle-undeclared.md)


<include>(.issues/timestampable-uninitialized.md)


<include>(.issues/translatable-merge-cascade.md)

en/docs/doctrine/doctrine-behaviors/known_issues/.issues/typed-properties-uninitialized.md new file +15 −0

Typed property … must not be accessed before initialization in Blameable, Sluggable, SoftDeletable, Uuidable

Fixed in 2.0.0

Affected versions: 1.0.1 — 1.0.4.

Symptom. Error: Typed property App\Entity\X::$… must not be accessed before initialization:

  • Sluggable, Uuidable — on persist() of a new entity (generateSlug(), generateUuid());
  • Blameable — on persist() of a new entity when there is a user (getCreatedBy()), on remove() (getDeletedBy()), and for loaded entities with NULL in the column;
  • SoftDeletable — isDeleted() / getDeletedAt() of a new entity.

Cause. In 1.0.1 the trait properties became typed without default values (protected string $slug;, protected UuidInterface|string|null $uuid; etc.), and the methods read them before initialization.

Fix. In 2.0.0 the properties got default values (null, '' for slug), Blameable a nullable type. On 1.0.x, for Sluggable, Uuidable and SoftDeletable you can initialize the properties in the entity constructor ($this->slug = '', $this->uuid = null, $this->deletedAt = null); for Blameable — use BlameableMethodsTrait and declare createdBy / updatedBy / deletedBy yourself with a nullable type.

en/docs/doctrine/doctrine-behaviors/known_issues/.issues/security-bundle-undeclared.md new file +11 −0

The package did not declare the symfony/security-bundle dependency

Fixed in 2.0.0

Affected versions: 1.0.0 — 1.0.4.

Symptom. In an application without symfony/security-bundle the container does not build: the Ufo\DoctrineBehaviors\Provider\UserProvider service cannot be autowired.

Cause. UserProvider depends on Symfony\Bundle\SecurityBundle\Security, while composer.json required only symfony/security-core.

Fix. In 2.0.0 symfony/security-bundle was added to require. On 1.0.x — install it in the application.

en/docs/doctrine/doctrine-behaviors/known_issues/.issues/timestampable-uninitialized.md new file +11 −0

Timestampable: error when saving a new entity

Fixed in 1.0.3

Affected versions: 1.0.1 — 1.0.2.

Symptom. persist() + flush() of a new entity with TimestampableTrait ends with Error: Typed property …::$createdAt must not be accessed before initialization.

Cause. protected DateTimeInterface $createdAt; has no default value, while updateTimestamps() checks $this->createdAt === null.

Fix. The properties are ?DateTimeInterface with a null default (PR #1).

en/docs/doctrine/doctrine-behaviors/known_issues/.issues/translatable-merge-cascade.md new file +11 −0

Translatable: invalid merge cascade in ORM 3

Fixed in 1.0.2

Affected versions: 1.0.0 — 1.0.1.

Symptom. When loading metadata of entities with TranslatableInterface / TranslationInterface, Doctrine ORM 3 throws a MappingException about the invalid cascade option merge.

Cause. TranslatableEventSubscriber mapped the translations and translatable relations with cascade: ['persist', 'merge', …]; ORM 3 allows only persist, remove, refresh, detach.

Fix. The merge cascade was removed.