我升级从Symfony 2.7到3.0 。它几乎可以工作。只有问题:我无法在下面的代码中覆盖AppBundle\Entity\MyRepository
,甚至不需要该文件(我将其重命名为测试版)和被Symfony跳过了。
应用/配置/ services.yml
# old, 2.7 (worked):
myRepositoryService:
class: AppBundle\Entity\MyRepository
factory_service: doctrine.orm.entity_manager
factory_method: getRepository
arguments: [AppBundle\Entity\MyEntity]
# new, 3.0 (skips the MyRepository):
myRepositoryService:
class: AppBundle\Entity\MyRepository
factory: ['@doctrine.orm.entity_manager', 'getRepository']
arguments: ['AppBundle\Entity\MyEntity']
的appbundle \实体\ MyRepository
class MyRepository extends EntityRepository {
public function findAll() {
die("MyRepository->findAll()"); // not executed
}
}
的appbundle \控制器\ MyController.php
$myItems = $this->get('myRepositoryService')->findAll(); // should die but doesn't
我是否错误配置了 services.yml ,以便Symfony为实体创建临时存储库文件而不是使用我创建的文件?
提前致谢!
答案 0 :(得分:2)
以下代码在Symfony 3.0中为我工作:
some_repository:
class: AppBundle\Repository\SomeRepository
factory: ['@doctrine.orm.default_entity_manager', getRepository]
arguments: [AppBundle:SomeEntity]
请注意与您的工厂服务名称不同,并且工厂方法和实体名称没有单引号。
正如我在评论中提到的那样,应该在实体的映射中设置repositoryClass
。