我想使用本答案中描述的解决方案,但它不起作用。 Symfony2/JmsDIExtraBundle Injecting repository into service using annotations
我正在使用symfony 3和我的用例,你可以在下面找到:
namespace AppBundle\Repository;
use JMS\DiExtraBundle\Annotation as DI;
use UserBundle\Repository\UserRepository as BaseUserRepository;
/**
* @DI\Service("user_repository", factoryService = "doctrine", factoryMethod="getRepository", factoryMethodArguments={
* "persistentObjectName" = "AppBundle\Model\User"
* } )
*/
class UserRepository extends BaseUserRepository
{
}
基类:
namespace UserBundle\Repository;
use Doctrine\ODM\MongoDB\DocumentRepository;
use UserBundle\Model\User;
abstract class UserRepository extends DocumentRepository
{
public function save(User $user)
{
$dm = $this->getDocumentManager();
$dm->persist($user);
$dm->flush($user);
}
}
我要使用UserRepository的命令
class CreateAdminCommand extends BaseCreateAdminCommand
{
protected function execute(InputInterface $input, OutputInterface $output)
{
$this->userRepository = $this->getContainer()->get('user_repository');
}
}
接下来,当我想执行我的命令时,我收到此错误:
[Doctrine \ Common \ Annotations \ AnnotationException] [Creation Error] 在类上声明的注释@DI \ Service AppBundle \ Repository \ UserRepository没有名为的属性 " factoryService&#34 ;.可用属性:id,parent,public,scope, shared,deprecated,decorates,decoration_inner_name,abstract, 环境
我同意这个错误,因为我在Service注释中找不到这样的属性。所以在我看来它不应该工作,但它在另一个问题和github上被描述为正确的解决方案。我在这里不懂东西,你能帮帮我吗?