2017-01-31 9 views
0

Я использую symfony с доктриной, и я пытаюсь автоматически применить пользовательскую sql-функцию к свойству внутри объекта.Автоматически применять пользовательскую sql-функцию для свойства внутри объекта

Я уже определил пользовательские SQL-функции в dql службе, и я могу использовать его собственные функции, которые я сделал в хранилище сущностей ..

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 по запросу.

Любые идеи будут оценены.

С уважением

ответ

0

Очевидно, это невозможно, и по уважительной причине.

Как было упомянуто мной одной из разработчиков, это, как правило, плохая идея справиться с этим на db (хотя есть реализация перевода сущности через слушателя).

Ссылка на его ответ и существующая реализация https://github.com/doctrine/doctrine2/issues/6269#issuecomment-276399555

Для округления значения свойства (которое может быть более распространенным использование), вы можете использовать scale свойство в @Column() Аннотация.

Поскольку я полностью согласен с его комментарием, я, вероятно, подготовлю языковой пакет к клиенту и приложите его к решению для перевода клиента.