-
-
Notifications
You must be signed in to change notification settings - Fork 1.3k
Closed
Closed
Copy link
Labels
BugA confirmed bug in Extensions that needs fixing.A confirmed bug in Extensions that needs fixing.SoftDeleteable
Description
Environment
Package
show
name : gedmo/doctrine-extensions
descrip. : Doctrine behavioral extensions
keywords : Blameable, behaviors, doctrine, extensions, gedmo, loggable, nestedset, odm, orm, sluggable, sortable, timestampable, translatable, tree, uploadable
versions : * v3.20.0
released : 2025-04-04, 1 month ago
latest : v3.20.0 released 2025-04-04, 1 month ago
type : library
license : MIT License (MIT) (OSI approved) https://spdx.org/licenses/MIT.html#licenseText
homepage : http://gediminasm.org/
source : [git] https://github.com/doctrine-extensions/DoctrineExtensions.git ea1d37586b8e4bae2a815feb38b177894b12c44c
dist : [zip] https://api.github.com/repos/doctrine-extensions/DoctrineExtensions/zipball/ea1d37586b8e4bae2a815feb38b177894b12c44c ea1d37586b8e4bae2a815feb38b177894b12c44c
path : /home/niamor/dev/guestspot/vendor/gedmo/doctrine-extensions
names : gedmo/doctrine-extensions
support
docs : https://github.com/doctrine-extensions/DoctrineExtensions/tree/main/doc
issues : https://github.com/doctrine-extensions/DoctrineExtensions/issues
source : https://github.com/doctrine-extensions/DoctrineExtensions/tree/v3.20.0
autoload
psr-4
Gedmo\ => src/
requires
behat/transliterator ^1.2
doctrine/collections ^1.2 || ^2.0
doctrine/deprecations ^1.0
doctrine/event-manager ^1.2 || ^2.0
doctrine/persistence ^2.2 || ^3.0 || ^4.0
php ^7.4 || ^8.0
psr/cache ^1 || ^2 || ^3
psr/clock ^1
symfony/cache ^5.4 || ^6.0 || ^7.0
requires (dev)
doctrine/annotations ^1.13 || ^2.0
doctrine/cache ^1.11 || ^2.0
doctrine/common ^2.13 || ^3.0
doctrine/dbal ^3.7 || ^4.0
doctrine/doctrine-bundle ^2.3
doctrine/mongodb-odm ^2.3
doctrine/orm ^2.20 || ^3.3
friendsofphp/php-cs-fixer ^3.70
nesbot/carbon ^2.71 || ^3.0
phpstan/phpstan ^2.1.1
phpstan/phpstan-doctrine ^2.0.1
phpstan/phpstan-phpunit ^2.0.3
phpunit/phpunit ^9.6
rector/rector ^2.0.6
symfony/console ^5.4 || ^6.0 || ^7.0
symfony/doctrine-bridge ^5.4 || ^6.0 || ^7.0
symfony/phpunit-bridge ^6.0 || ^7.0
symfony/uid ^5.4 || ^6.0 || ^7.0
symfony/yaml ^5.4 || ^6.0 || ^7.0
suggests
doctrine/mongodb-odm to use the extensions with the MongoDB ODM
doctrine/orm to use the extensions with the ORM
conflicts
doctrine/annotations <1.13 || >=3.0
doctrine/common <2.13 || >=4.0
doctrine/dbal <3.7 || >=5.0
Doctrine packages
show
Direct dependencies required in composer.json:
doctrine/annotations 2.0.2 2.0.2 Docblock Annotations Parser
doctrine/doctrine-bundle 2.14.0 2.14.0 Symfony DoctrineBundle
doctrine/doctrine-fixtures-bundle 4.1.0 4.1.0 Symfony DoctrineFixturesBundle
doctrine/doctrine-migrations-bundle 3.4.2 3.4.2 Symfony DoctrineMigrationsBundle
doctrine/orm 3.3.3 3.3.3 Object-Relational-Mapper for PHP
Transitive dependencies not required in composer.json:
doctrine/cache 2.2.0 2.2.0 PHP Doctrine Cache library is a popular cache implementation that supports many different drivers such as redis, memcache, apc, mongodb and others.
doctrine/collections 2.3.0 2.3.0 PHP Doctrine Collections library that adds additional functionality on top of PHP arrays.
doctrine/data-fixtures 2.0.2 2.0.2 Data Fixtures for all Doctrine Object Managers
doctrine/dbal 3.9.4 4.2.3 Powerful PHP database abstraction layer (DBAL) with many features for database schema introspection and management.
doctrine/deprecations 1.1.5 1.1.5 A small layer on top of trigger_error(E_USER_DEPRECATED) or PSR-3 logging with options to disable all deprecations or selectively for packages.
doctrine/event-manager 2.0.1 2.0.1 The Doctrine Event Manager is a simple PHP event system that was built to be used with the various Doctrine projects.
doctrine/inflector 2.0.10 2.0.10 PHP Doctrine Inflector is a small library that can perform string manipulations with regard to upper/lowercase and singular/plural forms of words.
doctrine/instantiator 2.0.0 2.0.0 A small, lightweight utility to instantiate objects in PHP without invoking their constructors
doctrine/lexer 3.0.1 3.0.1 PHP Doctrine Lexer parser library that can be used in Top-Down, Recursive Descent Parsers.
doctrine/migrations 3.9.0 3.9.0 PHP Doctrine Migrations project offer additional functionality on top of the database abstraction layer (DBAL) for versioning your database schema and easily deploying changes to it. It is a very ea...
doctrine/persistence 4.0.0 4.0.0 The Doctrine Persistence project is a set of shared interfaces and functionality that the different Doctrine object mappers share.
doctrine/sql-formatter 1.5.2 1.5.2 a PHP SQL highlighting library
PHP version
8.4
Subject
After upgrading gedmo/doctrine-extensions
to 3.20
, any changes made to an entity during the preSoftDelete
event are no longer taken into account.
This is due to the entity being detach from the object manager on postFlush
from #2930
Minimal repository with the bug
Steps to reproduce
Create a listener to the preSoftDelete
event, then update a property on the entity.
For example:
<?php
declare(strict_types=1);
namespace App\Shared\Infrastructure\EntitySubscriber;
use App\Shared\Domain\Entity\StateableInterface;
use App\Shared\Domain\Enum\WorkflowStateTransitionEnum;
use Doctrine\Bundle\DoctrineBundle\Attribute\AsDoctrineListener;
use Doctrine\ORM\EntityManagerInterface;
use Gedmo\SoftDeleteable\Event\PreSoftDeleteEventArgs;
use Gedmo\SoftDeleteable\SoftDeleteableListener as GedmoSoftDeleteableListener;
use Symfony\Component\Workflow\Registry;
#[AsDoctrineListener(event: GedmoSoftDeleteableListener::PRE_SOFT_DELETE, priority: 10, connection: 'default')]
final readonly class SoftDeleteableListener
{
public function __construct(
private Registry $workflowRegistry,
) {
}
/**
* @param PreSoftDeleteEventArgs<EntityManagerInterface> $eventArgs
*/
public function preSoftDelete(PreSoftDeleteEventArgs $eventArgs): void
{
$entity = $eventArgs->getObject();
if (!$entity instanceof StateableInterface) {
return;
}
if (!$this->workflowRegistry->has($entity)) {
return;
}
$workflow = $this->workflowRegistry->get($entity);
if ($workflow->can($entity, WorkflowStateTransitionEnum::Delete->value)) {
$workflow->apply($entity, WorkflowStateTransitionEnum::Delete->value);
}
}
}
Expected results
Prior to 3.20
, the delete state was correctly apply to my entity.
Actual results
Since 3.20
, state property is no longer update.
Metadata
Metadata
Assignees
Labels
BugA confirmed bug in Extensions that needs fixing.A confirmed bug in Extensions that needs fixing.SoftDeleteable