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;
}
如果我的实体使用 GUID 字段类型作为标识符,我如何在 config_yml 中定义映射?
详情
我有一个使用 Symfony 2.7.3 和 FosElasticaBundle 3.1.4 的项目。
我已经配置了映射,当我使用 populate 命令或编辑现有实体时一切正常;但是在创建新实体时出现异常
"expected a simple value for field [_id] but found [START_OBJECT]]"
..."_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;
}