首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何从弹性结果到理论实体创建自定义转换器

如何从弹性结果到理论实体创建自定义转换器
EN

Stack Overflow用户
提问于 2015-09-08 14:39:02
回答 1查看 3.7K关注 0票数 2

tl;dr

如何将基础变压器从弹性结果扩展/覆盖到FosElasticaBundle中的理论实体?

详细信息

我想在transform中更改FOS\ElasticaBundle\Doctrine\AbstractElasticaToModelTransformer方法,以便可以向检索到的实体添加一个自定义属性。

我用黑客的方法进行了测试,它的工作原理完全符合我的要求。

在不侵入该方法的情况下,覆盖/扩展该方法的最佳解决方案是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-15 15:35:35

您可以重写转换器,并通过创建新服务来定义自己的转换器。完整的故事可以在http://obtao.com/blog/2014/05/advanced-indexing-with-elasticsearch-foselasticabundle/上阅读

简短:首先定义这样的服务(在我的例子中,我只索引一个特定的实体):

代码语言:javascript
运行
复制
myapp.elastica_to_model.transformer.company:
    class: AppBundle\Transformers\ElasticaToCompanyTransformer
    arguments: [ @doctrine, "AppBundle\Entity\Company" ]
    calls:
        - [ setPropertyAccessor, ["@fos_elastica.property_accessor"] ]
    tags:
        - { name: fos_elastica.elastica_to_model_transformer.app.company }

然后创建实际的服务类,在该类中扩展原始转换器并重写transform方法。

最后,您告诉FosElastica使用此转换器而不是原来的转换器:

代码语言:javascript
运行
复制
fos_elastica:
    indexes:
        app:
            types:
                company:
                    mappings:
                        ...
                    persistence:
                        ...
                        elastica_to_model_transformer:
                            service: myapp.elastica_to_model.transformer.company
票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32460632

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档