FosElasticaBundle:定义GUID / UUID字段的映射

时间:2015-08-19 14:22:23

标签: symfony elasticsearch foselasticabundle

如果我的实体使用GUID字段类型作为标识符,如何在 config_yml 中定义映射?

详细

我有一个Symfony 2.7.3和FosElasticaBundle 3.1.4的项目。

我已经配置了映射,当我使用 populate 命令或编辑现有实体时,一切正常;但是在创建新实体时我得到了一个异常

"expected a simple value for field [_id] but found [START_OBJECT]]"

Checking the JSON response我注意到 _id 设置为空对象..."_id":{}...

Uuid 类已经有一个 __ toString 方法,我希望该方法可以解决这个问题,但我可能会遗漏一些东西。

当前映射

fos_elastica:
    clients:
        default: { host: %elasticsearch_host%, port: %elasticsearch_port%, logger: true }
    indexes:
        app:
            types:
                user:
                    mappings:
                        name: ~
                        surname: ~
                    persistence:
                        driver: orm
                        model: AppBundle\Entity\User
                        provider: ~
                        listener: ~
                        finder: ~

谢谢。

1 个答案:

答案 0 :(得分:0)

UUID / GUID字段没有特定的映射。

使用标准的Symfony属性访问器检索标识符,因此我的问题的解决方案是更改我的实体中的getId()方法,并使其强制转换为字符串

public function getId()
{
    return (string)$this->id;
}