我正在使用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。
任何见解都将受到赞赏。
此致
答案 0 :(得分:0)
显然这是不可能的,而且有充分的理由。
正如开发团队之一向我提到的那样,在db上处理这个问题通常是一个坏主意(尽管通过监听器实现了实体转换)。
链接到他的答案和现有实施 https://github.com/doctrine/doctrine2/issues/6269#issuecomment-276399555
对于舍入属性值(可能更常用),您可以在scale
注释中使用@Column()
属性。
由于我完全赞同他的评论,我可能会为客户准备一个语言包并将其附加到客户端翻译解决方案。