我正在尝试在symfony 4项目中使用FOSElasticaBundle,但我遇到了一些问题。
我有一个实体"Users",在属性“segments”中有下一个注释:
* @var Collection $segments * @ORM\ManyToMany(targetEntity="App\Entity\Segment", mappedBy="users", cascade={"persist", "remove"})
在fos_elastica.yaml文件中进行映射的正确形式是什么?
发布于 2018-10-11 18:31:20
我建议你在你的用例中思考,然后决定你将使用哪些相关的实体来进行搜索。一旦决定,你可以做两件事:
选项A,使用嵌套字段。更简单,但如果更新子(相关)实体,Elasticsearch索引将不会更新。你必须确保这发生在你的代码中。例如,每次更新子实体时,都会在父实体中设置一个时间戳,这样FosElasticaBundle就可以捕获该字符并运行实体序列化程序,这样子实体就会被序列化。
选项B,在Elasticsearch中使用子父关系。在这种情况下,FosElasticaBundle将为每个Doctrine实体正确地跟踪您的实体更改,因此您不需要在代码中管理它。
在这两种情况下,你的多对多关系变成了两个一对多的关系。在选项A中,这是由在父文档中嵌入子文档的序列化程序完成的。在第二种情况下,它被转换为父子关系。
https://stackoverflow.com/questions/52149845
复制相似问题