Skip to content

Commit

Permalink
Add support for Doctrine ORM 3
Browse files Browse the repository at this point in the history
  • Loading branch information
loic425 committed Jan 14, 2025
1 parent eebdf34 commit d228a5c
Show file tree
Hide file tree
Showing 7 changed files with 22 additions and 14 deletions.
17 changes: 14 additions & 3 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,16 +13,21 @@ on:
jobs:
tests:
runs-on: ubuntu-latest
name: "PHP ${{ matrix.php }}, Symfony ${{ matrix.symfony }}"
name: "PHP ${{ matrix.php }}, Symfony ${{ matrix.symfony }}, ORM ${{ matrix.orm }}"
env:
APP_ENV: ${{ matrix.app_env }}
strategy:
fail-fast: false
matrix:
orm: ['2.*', '3.*']
php: ["8.1", "8.2", "8.3"]
composer-flags: ['--no-scripts --prefer-stable --prefer-dist']
symfony: ["^6.4", "^7.1"]
app_env: ["test"]
include:
- php: "8.3"
symfony: "^7.1"
composer-flags: ['--no-scripts --prefer-lowest --prefer-dist']
exclude:
- php: "8.1"
symfony: "^7.1"
Expand All @@ -47,6 +52,13 @@ jobs:
composer config extra.symfony.require "${{ matrix.symfony }}"
(cd src/Component && composer config extra.symfony.require "${{ matrix.symfony }}")
-
name: Restrict ORM version
if: matrix.orm != ''
run: |
composer require --dev doctrine/orm "${{ matrix.orm }}" --no-update --no-scripts
(cd src/Component && composer require --dev doctrine/orm "${{ matrix.orm }}" --no-update --no-scripts)
-
name: Remove hateoas on Symfony 7
if: matrix.symfony == '^7.0'
Expand All @@ -55,13 +67,12 @@ jobs:
-
name: Install dependencies
run: |
composer update --no-scripts
composer update ${{ matrix.composer-flags }}
(cd src/Component && composer update ${{ matrix.composer-flags }})
-
name: Prepare test application
run: |
(cd tests/Application && bin/console doctrine:database:create)
(cd tests/Application && bin/console doctrine:schema:create)
-
Expand Down
4 changes: 2 additions & 2 deletions composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@
},
"require-dev": {
"doctrine/doctrine-bundle": "^2.13",
"doctrine/orm": "^2.18",
"doctrine/orm": "^2.18 || ^3.3",
"friendsofsymfony/rest-bundle": "^3.7",
"jms/serializer-bundle": "^3.5 || ^4.0 || ^5.0",
"lchrusciel/api-test-case": "^5.0",
Expand Down Expand Up @@ -89,7 +89,7 @@
"winzou/state-machine-bundle": "^0.6.2"
},
"conflict": {
"doctrine/orm": "<2.18 || ^3.0",
"doctrine/orm": "<2.18",
"doctrine/doctrine-bundle": "<2.0 || ^3.0",
"friendsofsymfony/rest-bundle": "<3.0",
"jms/serializer-bundle": "<3.5",
Expand Down
5 changes: 3 additions & 2 deletions src/Bundle/Doctrine/ORM/ContainerRepositoryFactory.php
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
namespace Sylius\Bundle\ResourceBundle\Doctrine\ORM;

use Doctrine\ORM\EntityManagerInterface;
use Doctrine\ORM\EntityRepository as DoctrineEntityRepository;
use Doctrine\ORM\Mapping\ClassMetadata;
use Doctrine\ORM\Repository\RepositoryFactory;
use Doctrine\Persistence\ObjectRepository;
Expand All @@ -38,7 +39,7 @@ public function __construct(RepositoryFactory $doctrineFactory, array $genericEn
}

/** @psalm-suppress InvalidReturnType */
public function getRepository(EntityManagerInterface $entityManager, $entityName): ObjectRepository
public function getRepository(EntityManagerInterface $entityManager, $entityName): DoctrineEntityRepository
{
$metadata = $entityManager->getClassMetadata($entityName);

Expand All @@ -53,7 +54,7 @@ public function getRepository(EntityManagerInterface $entityManager, $entityName
private function getOrCreateRepository(
EntityManagerInterface $entityManager,
ClassMetadata $metadata,
): ObjectRepository {
): DoctrineEntityRepository {

Check failure on line 57 in src/Bundle/Doctrine/ORM/ContainerRepositoryFactory.php

View workflow job for this annotation

GitHub Actions / PHP 8.3, Symfony ^6.4, ORM 2.*

MoreSpecificReturnType

src/Bundle/Doctrine/ORM/ContainerRepositoryFactory.php:57:8: MoreSpecificReturnType: The declared return type 'Doctrine\ORM\EntityRepository' for Sylius\Bundle\ResourceBundle\Doctrine\ORM\ContainerRepositoryFactory::getOrCreateRepository is more specific than the inferred return type 'Doctrine\Persistence\ObjectRepository' (see https://psalm.dev/070)

Check failure on line 57 in src/Bundle/Doctrine/ORM/ContainerRepositoryFactory.php

View workflow job for this annotation

GitHub Actions / PHP 8.3, Symfony ^6.4, ORM 3.*

MoreSpecificReturnType

src/Bundle/Doctrine/ORM/ContainerRepositoryFactory.php:57:8: MoreSpecificReturnType: The declared return type 'Doctrine\ORM\EntityRepository' for Sylius\Bundle\ResourceBundle\Doctrine\ORM\ContainerRepositoryFactory::getOrCreateRepository is more specific than the inferred return type 'Doctrine\Persistence\ObjectRepository' (see https://psalm.dev/070)

Check failure on line 57 in src/Bundle/Doctrine/ORM/ContainerRepositoryFactory.php

View workflow job for this annotation

GitHub Actions / PHP 8.2, Symfony ^6.4, ORM 3.*

MoreSpecificReturnType

src/Bundle/Doctrine/ORM/ContainerRepositoryFactory.php:57:8: MoreSpecificReturnType: The declared return type 'Doctrine\ORM\EntityRepository' for Sylius\Bundle\ResourceBundle\Doctrine\ORM\ContainerRepositoryFactory::getOrCreateRepository is more specific than the inferred return type 'Doctrine\Persistence\ObjectRepository' (see https://psalm.dev/070)

Check failure on line 57 in src/Bundle/Doctrine/ORM/ContainerRepositoryFactory.php

View workflow job for this annotation

GitHub Actions / PHP 8.2, Symfony ^6.4, ORM 2.*

MoreSpecificReturnType

src/Bundle/Doctrine/ORM/ContainerRepositoryFactory.php:57:8: MoreSpecificReturnType: The declared return type 'Doctrine\ORM\EntityRepository' for Sylius\Bundle\ResourceBundle\Doctrine\ORM\ContainerRepositoryFactory::getOrCreateRepository is more specific than the inferred return type 'Doctrine\Persistence\ObjectRepository' (see https://psalm.dev/070)

Check failure on line 57 in src/Bundle/Doctrine/ORM/ContainerRepositoryFactory.php

View workflow job for this annotation

GitHub Actions / PHP 8.1, Symfony ^6.4, ORM 2.*

MoreSpecificReturnType

src/Bundle/Doctrine/ORM/ContainerRepositoryFactory.php:57:8: MoreSpecificReturnType: The declared return type 'Doctrine\ORM\EntityRepository' for Sylius\Bundle\ResourceBundle\Doctrine\ORM\ContainerRepositoryFactory::getOrCreateRepository is more specific than the inferred return type 'Doctrine\Persistence\ObjectRepository' (see https://psalm.dev/070)

Check failure on line 57 in src/Bundle/Doctrine/ORM/ContainerRepositoryFactory.php

View workflow job for this annotation

GitHub Actions / PHP 8.3, Symfony ^7.1, ORM 3.*

MoreSpecificReturnType

src/Bundle/Doctrine/ORM/ContainerRepositoryFactory.php:57:8: MoreSpecificReturnType: The declared return type 'Doctrine\ORM\EntityRepository' for Sylius\Bundle\ResourceBundle\Doctrine\ORM\ContainerRepositoryFactory::getOrCreateRepository is more specific than the inferred return type 'Doctrine\Persistence\ObjectRepository' (see https://psalm.dev/070)

Check failure on line 57 in src/Bundle/Doctrine/ORM/ContainerRepositoryFactory.php

View workflow job for this annotation

GitHub Actions / PHP 8.2, Symfony ^7.1, ORM 3.*

MoreSpecificReturnType

src/Bundle/Doctrine/ORM/ContainerRepositoryFactory.php:57:8: MoreSpecificReturnType: The declared return type 'Doctrine\ORM\EntityRepository' for Sylius\Bundle\ResourceBundle\Doctrine\ORM\ContainerRepositoryFactory::getOrCreateRepository is more specific than the inferred return type 'Doctrine\Persistence\ObjectRepository' (see https://psalm.dev/070)

Check failure on line 57 in src/Bundle/Doctrine/ORM/ContainerRepositoryFactory.php

View workflow job for this annotation

GitHub Actions / PHP 8.1, Symfony ^6.4, ORM 3.*

MoreSpecificReturnType

src/Bundle/Doctrine/ORM/ContainerRepositoryFactory.php:57:8: MoreSpecificReturnType: The declared return type 'Doctrine\ORM\EntityRepository' for Sylius\Bundle\ResourceBundle\Doctrine\ORM\ContainerRepositoryFactory::getOrCreateRepository is more specific than the inferred return type 'Doctrine\Persistence\ObjectRepository' (see https://psalm.dev/070)

Check failure on line 57 in src/Bundle/Doctrine/ORM/ContainerRepositoryFactory.php

View workflow job for this annotation

GitHub Actions / PHP 8.2, Symfony ^7.1, ORM 2.*

MoreSpecificReturnType

src/Bundle/Doctrine/ORM/ContainerRepositoryFactory.php:57:8: MoreSpecificReturnType: The declared return type 'Doctrine\ORM\EntityRepository' for Sylius\Bundle\ResourceBundle\Doctrine\ORM\ContainerRepositoryFactory::getOrCreateRepository is more specific than the inferred return type 'Doctrine\Persistence\ObjectRepository' (see https://psalm.dev/070)

Check failure on line 57 in src/Bundle/Doctrine/ORM/ContainerRepositoryFactory.php

View workflow job for this annotation

GitHub Actions / PHP 8.3, Symfony ^7.1, ORM 2.*

MoreSpecificReturnType

src/Bundle/Doctrine/ORM/ContainerRepositoryFactory.php:57:8: MoreSpecificReturnType: The declared return type 'Doctrine\ORM\EntityRepository' for Sylius\Bundle\ResourceBundle\Doctrine\ORM\ContainerRepositoryFactory::getOrCreateRepository is more specific than the inferred return type 'Doctrine\Persistence\ObjectRepository' (see https://psalm.dev/070)
$repositoryHash = $metadata->getName() . spl_object_hash($entityManager);

if (!isset($this->managedRepositories[$repositoryHash])) {
Expand Down
2 changes: 1 addition & 1 deletion src/Bundle/EventListener/ORMTranslatableListener.php
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,7 @@ private function mapTranslatable(ClassMetadata $metadata): void
'mappedBy' => 'translatable',
'fetch' => ClassMetadata::FETCH_EXTRA_LAZY,
'indexBy' => 'locale',
'cascade' => ['persist', 'merge', 'remove'],
'cascade' => ['persist', 'remove'],
'orphanRemoval' => true,
]);
}
Expand Down
4 changes: 2 additions & 2 deletions src/Component/composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@
},
"require-dev": {
"behat/transliterator": "^1.3",
"doctrine/orm": "^2.18",
"doctrine/orm": "^2.18 || ^3.3",
"matthiasnoback/symfony-dependency-injection-test": "^4.2.1 || ^5.1",
"phpspec/phpspec": "^7.3",
"phpspec/prophecy-phpunit": "^2.0",
Expand All @@ -59,7 +59,7 @@
"twig/twig": "^3.0"
},
"conflict": {
"doctrine/orm": "<2.18 || ^3.0",
"doctrine/orm": "<2.18",
"twig/twig": "<3.0"
},
"extra": {
Expand Down
2 changes: 0 additions & 2 deletions tests/Application/src/Entity/GedmoBaseExample.php
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,7 @@
use Gedmo\Mapping\Annotation as Gedmo;
use Sylius\Resource\Model\ResourceInterface;

#[ORM\Entity]
#[ORM\MappedSuperclass]
#[ORM\Table(name: 'gedmo')]
class GedmoBaseExample implements ResourceInterface
{
#[ORM\Id]
Expand Down
2 changes: 0 additions & 2 deletions tests/Application/src/Entity/GedmoExtendedExample.php
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,6 @@
use Doctrine\ORM\Mapping as ORM;

#[ORM\Entity]
#[ORM\MappedSuperclass]

class GedmoExtendedExample extends GedmoBaseExample
{
#[ORM\Column(length: 255)]
Expand Down

0 comments on commit d228a5c

Please sign in to comment.