JMSDIExtraBundle将存储库声明为服务

时间:2016-08-07 20:56:06

标签: php symfony

我想使用本答案中描述的解决方案,但它不起作用。 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上被描述为正确的解决方案。我在这里不懂东西,你能帮帮我吗?

0 个答案:

没有答案