我正在考虑第一次在项目中使用Doctrine2。在我的研究中,让我感到震惊的一件事是:
<?php
/**
* @Entity(repositoryClass="BugRepository")
* @Table(name="bugs")
**/
class Bug
{
//...
}
看来我只能将一个存储库与每个实体关联起来?如果这个Repository类变得太大(太多方法/代码)并且我想将它分成多个Repository类,我该怎么办?
对于您的情况,存储库即服务:
<?php
/**
* @Entity
* @Table(name="bugs")
**/
class Bug
{
//...
}
然后创建第一个存储库
<?php
use Doctrine\ORM\EntityManager;
use Doctrine\ORM\EntityRepository;
final class FirstBugRepository
{
/**
* @var EntityRepository
*/
private $repository;
public function __construct(EntityManager $entityManager)
{
$this->repository = $entityManager->getRepository(Bug::class);
}
// ... some methods
}
下一个:
<?php
use Doctrine\ORM\EntityManager;
use Doctrine\ORM\EntityRepository;
final class SecondBugRepository
{
/**
* @var EntityRepository
*/
private $repository;
public function __construct(EntityManager $entityManager)
{
$this->repository = $entityManager->getRepository(Bug::class);
}
// ... other methods
}
你想知道更多和一个完整的例子吗?检查发布How to use Repository with Doctrine as Service in Symfony