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

FosElasticaBundle: define mapping for GUID / UUID fields

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

详情

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

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

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

我注意到 _id 被设置为空对象 ..."_id":{}....

Uuid class 已经有一个 __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: ~

谢谢。

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

标识符是使用标准的 Symfony 属性 访问器检索的,所以我的问题的解决方案是更改实体中的 getId() 方法,并将其 cast 为字符串

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