我想知道如何扩展自定义存储库并在doctrine中从doctrine实体管理器调用扩展存储库。
我的实体课程:
/**
* @ORM\Entity(repositoryClass="Vendor\MyBundle\Repository\MyEntityRepository")
*/
class MyEntity
{
...
我的实体存储库类:
class MyEntityRepository extends EntityRepository
{
...
My Extended Repository类:
class MyExtendedEntityRepository extends MyEntityRepository
{
...
调用MyEntityRepository:
class MyEntityManager
{
protected $emr;
/**
*
* @return MyEntityRepository
*/
public function getRepository()
{
return $this->emr->getRepository('MyVendorBundle:MyEntity');
}
...
调用MyExtendedEntityRepository?
class MyOtherEntityManager
{
protected $emr;
/**
*
* @return MyExtendedEntityRepository
*/
public function getRepository()
{
//This is what i want to know: How to access to the extended repository?
}
...
由于
答案 0 :(得分:2)
你不能,doctrine getRepository()与实体一起工作并解决相关的存储库。我不明白什么是逻辑或用例,但如果你需要重用某些部分的存储库抛出其他实体,它建议使用traits。另一方面,如果您确实需要使用该方案,则可以在MyExtendedEntityRepository
方法中构建getRepository
。
/**
*
* @return MyExtendedEntityRepository
*/
public function getRepository()
{
$class = $this->emr->getClassMetadata(MyEntity::class);
return new MyExtendedEntityRepository($this->emr, $class);
}