Symfony2使用EntityRepository中的参数

时间:2016-01-25 12:36:19

标签: php symfony doctrine-orm

我想知道这是否是一个好习惯。但对于我的项目,我需要从parameters.yml获取参数并在EntityRepository内使用它。 所以为此我创建了一个服务,但仍然没有执行调用。

services:
    xxx_repository:
        class: XXX\DatabaseBundle\Repository\CitiesRepository
        calls:
            - [setTheParameter, ["%the_parameter%"]]
  

parameters.yml

...
the_parameter: 14400
...

在CitiesRepository.php中,我正在执行以下操作:

class CitiesRepository extends EntityRepository
{

    /**
     * @var
     */
    protected $theParameter;

    public function setTheParameter($theParameter)
    {
        $this->theParameter = $theParameter;
    }
    ....
}

但$ this-> theParameter始终为空。

所以我有两个问题:这是一个健康的习惯吗?为什么结果总是为空?

1 个答案:

答案 0 :(得分:1)

您需要使用getRepository服务的doctrine方法作为工厂:

xxx_repository:
    class: XXX\DatabaseBundle\Repository\CitiesRepository
    factory: ["@doctrine", "getRepository"]
    arguments: ["DatabaseBundle:City"]
    calls:
        - ["setTheParameter", ["%the_parameter%"]]

然后您可以在控制器中访问此存储库作为服务:

$this->get('xxx_repository');