在实体

时间:2017-01-31 11:12:12

标签: doctrine-orm doctrine symfony

我正在使用symfony和doctrine,我试图在实体内的属性上自动应用自定义sql函数。

我已经在dql服务中定义了自定义sql-function,我可以使用它在实体存储库中创建的自定义函数。

orm:
    mappings:
      AppBundle:
        type: annotation
    dql:
      string_functions:
        translate_term: AppBundle\DoctrineExtensions\Utils\TranslateTerm

问题是我希望能够使用findAll()进行简单查询。

我正在考虑使用AbstractIdGenerator,但我不确定它是否会帮助我,因为我理解它的插入。而我想要的是翻译从db。

收到的数据
   /**
     * @var string
     *
     * @ORM\Column(name="mi_term", type="string", length=25, nullable=true)
     * @ORM\GeneratedValue(strategy="CUSTOM")
     * @ORM\CustomIdGenerator(class="AppBundle\DoctrineExtensions\Utils\TranslateTermEntity")
     */
    private $miTerm;

目的是在查询时翻译db term。

任何见解都将受到赞赏。

此致

1 个答案:

答案 0 :(得分:0)

显然这是不可能的,而且有充分的理由。

正如开发团队之一向我提到的那样,在db上处理这个问题通常是一个坏主意(尽管通过监听器实现了实体转换)。

链接到他的答案和现有实施 https://github.com/doctrine/doctrine2/issues/6269#issuecomment-276399555

对于舍入属性值(可能更常用),您可以在scale注释中使用@Column()属性。

由于我完全赞同他的评论,我可能会为客户准备一个语言包并将其附加到客户端翻译解决方案。