Dependency injection 通过services.yml将自定义实体库类传递给服务

Dependency injection 通过services.yml将自定义实体库类传递给服务,dependency-injection,symfony,doctrine-orm,Dependency Injection,Symfony,Doctrine Orm,我尝试通过services.yml加载带有自定义存储库的服务 现在我有: parameters: job_entity_name: Marek\JobeetBundle\Entity\Job category_entity_name: Marek\JobeetBundle\Entity\Category services: job_metadata: class: Doctrine\ORM\Mapping\ClassMetaData arguments:

我尝试通过services.yml加载带有自定义存储库的服务

现在我有:

parameters:
    job_entity_name:  Marek\JobeetBundle\Entity\Job
    category_entity_name:  Marek\JobeetBundle\Entity\Category

services:
  job_metadata:
    class: Doctrine\ORM\Mapping\ClassMetaData
    arguments: 
      name: [%job_entity_name%]
  category_metadata:
    class: Doctrine\ORM\Mapping\ClassMetaData
    arguments: 
      name: [%category_entity_name%]
  job_repo:
    class: Marek\JobeetBundle\Repositories\JobRepository
    arguments: 
      em: [@doctrine.orm.entity_manager]
      class: [@job_metadata] 
  category_repo:
    class: Marek\JobeetBundle\Repositories\CategoryRepository
    arguments: 
      em: [@doctrine.orm.entity_manager]
      class: [@category_metadata]      
  job_service:
    class: Marek\JobeetBundle\JobService
    arguments:    
      jobRepo: [@job_repo]
      categoryRepo: [@category_repo]
错误:

注意:中的数组到字符串转换 D:\Devel\symfony2\jobeet\vendor\doctor\lib\doctor\ORM\Mapping\ClassMetadata.php 第66行

我放弃了。有人能帮忙吗

[编辑]

当然,我的模式不好,正确的是:

services:
  job_metadata:
    class: Doctrine\ORM\Mapping\ClassMetaData
    arguments: 
      name: "Marek\JobeetBundle\Entity\Job"
  category_metadata:
    class: Doctrine\ORM\Mapping\ClassMetaData
    arguments: 
      name: "Marek\JobeetBundle\Entity\Category"
  job_repo:
    class: Marek\JobeetBundle\Repositories\JobRepository
    arguments: 
      em: @doctrine.orm.entity_manager
      class: @job_metadata 
  category_repo:
    class: Marek\JobeetBundle\Repositories\CategoryRepository
    arguments: 
      em: @doctrine.orm.entity_manager
      class: @category_metadata      
  job_service:
    class: Marek\JobeetBundle\JobService
    arguments:    
      jobRepo: @job_repo
      categoryRepo: @category_repo

在这个答案中,您将找到一种更好的方法将存储库定义为服务(即使用factory服务和factory方法)