60 lines
1.9 KiB
PHP
60 lines
1.9 KiB
PHP
<?php
|
||
|
||
namespace Doctrine\Bundle\DoctrineBundle\Repository;
|
||
|
||
use Doctrine\ORM\EntityRepository;
|
||
use Doctrine\Persistence\ManagerRegistry;
|
||
use LogicException;
|
||
use Symfony\Component\VarExporter\LazyGhostTrait;
|
||
|
||
use function sprintf;
|
||
use function trait_exists;
|
||
|
||
if (trait_exists(LazyGhostTrait::class)) {
|
||
/**
|
||
* @template T of object
|
||
* @template-extends LazyServiceEntityRepository<T>
|
||
*/
|
||
class ServiceEntityRepository extends LazyServiceEntityRepository
|
||
{
|
||
}
|
||
} else {
|
||
/**
|
||
* Optional EntityRepository base class with a simplified constructor (for autowiring).
|
||
*
|
||
* To use in your class, inject the "registry" service and call
|
||
* the parent constructor. For example:
|
||
*
|
||
* class YourEntityRepository extends ServiceEntityRepository
|
||
* {
|
||
* public function __construct(ManagerRegistry $registry)
|
||
* {
|
||
* parent::__construct($registry, YourEntity::class);
|
||
* }
|
||
* }
|
||
*
|
||
* @template T of object
|
||
* @template-extends EntityRepository<T>
|
||
*/
|
||
class ServiceEntityRepository extends EntityRepository implements ServiceEntityRepositoryInterface
|
||
{
|
||
/**
|
||
* @param string $entityClass The class name of the entity this repository manages
|
||
* @psalm-param class-string<T> $entityClass
|
||
*/
|
||
public function __construct(ManagerRegistry $registry, string $entityClass)
|
||
{
|
||
$manager = $registry->getManagerForClass($entityClass);
|
||
|
||
if ($manager === null) {
|
||
throw new LogicException(sprintf(
|
||
'Could not find the entity manager for class "%s". Check your Doctrine configuration to make sure it is configured to load this entity’s metadata.',
|
||
$entityClass
|
||
));
|
||
}
|
||
|
||
parent::__construct($manager, $manager->getClassMetadata($entityClass));
|
||
}
|
||
}
|
||
}
|