Skip to content

Commit 6486aec

Browse files
authored
Merge 4.x into 5.x
2 parents fd59469 + fa12d29 commit 6486aec

2 files changed

Lines changed: 9 additions & 2 deletions

File tree

composer.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@
4444
"dama/doctrine-test-bundle": "^8.0.1",
4545
"doctrine/doctrine-bundle": "^2.7",
4646
"doctrine/mongodb-odm": "^2.4",
47-
"doctrine/orm": "^2.14",
47+
"doctrine/orm": "^2.14 || ^3.0",
4848
"friendsofphp/php-cs-fixer": "^3.4",
4949
"knplabs/knp-menu": "^3.0",
5050
"knplabs/knp-menu-bundle": "^3.0",

src/DependencyInjection/SonataClassificationExtension.php

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@
1313

1414
namespace Sonata\ClassificationBundle\DependencyInjection;
1515

16+
use Doctrine\ORM\EntityManager;
17+
use Sonata\ClassificationBundle\Entity\BaseCategory;
1618
use Sonata\Doctrine\Mapper\Builder\OptionsBuilder;
1719
use Sonata\Doctrine\Mapper\DoctrineCollector;
1820
use Symfony\Component\Config\Definition\Processor;
@@ -133,11 +135,16 @@ private function registerSonataDoctrineMapping(array $config): void
133135
->addOrder('position', 'ASC')
134136
);
135137

138+
$categoryCascade = ['persist', 'refresh', 'merge', 'detach'];
139+
$categoryIsEntity = \in_array(BaseCategory::class, class_parents($config['class']['category']), true);
140+
if ($categoryIsEntity && class_exists(EntityManager::class) && !method_exists(EntityManager::class, 'merge')) { // @phpstan-ignore-line
141+
unset($categoryCascade[array_search('merge', $categoryCascade, true)]);
142+
}
136143
$collector->addAssociation(
137144
$config['class']['category'],
138145
'mapManyToOne',
139146
OptionsBuilder::createManyToOne('parent', $config['class']['category'])
140-
->cascade(['persist', 'refresh', 'merge', 'detach'])
147+
->cascade(array_values($categoryCascade))
141148
->inversedBy('children')
142149
->addJoin([
143150
'name' => 'parent_id',

0 commit comments

Comments
 (0)