PHPCR 参考与儿童

PHPCR references vs. children

我想将我的遗留商店系统从关系系统迁移到基于文档的系统。原因很明显:我想降低描述商店商品的关系的复杂性,它可以具有多个不同的属性。

所以我阅读了 Doctrine PHPCR 的文档并发现,有几个关于如何使用引用构建模型的示例,因为 PHPCR 的主要概念是

如此处所述:Assocation Mapping

但是文档为了同一个目标使用了这两个概念:

参考:以作者和评论作为参考的文章

示例:Working with Objects

文章按其ID/path查询:/article/hello-world,评论和作者为参考

/**
 * @ReferenceOne
 */
private $author;

/**
 * @Referrers(referrerDocument="Comment", referencedBy="article")
 */
private $comments;

分层:博客用户作为子文档

示例:The QueryBuilder

它通过路径查询博客用户(可能是作者)

$qb->from('Blog\User', 'u');

// where name is "daniel"
$qb->where()
  ->eq()->field('u.name')->literal('daniel');

因此,我的主要问题是,这可能是什么原因,或者更具体地说,构建具有动态属性(如商店文章)的模型的最佳实践是什么?

/article/id:properties[A|B|C]

/article/id/propertyA
/article/id/propertyB
/article/id/propertyC

如果有人分享它的经验,那将是非常有帮助的。

我自己找到了答案:

  • 当您想要移动文档并重新排列结构时使用分层引用
  • 使用对describe/extend文档的引用

对于商店文章,最好使用名称、价格、税额等属性的引用。和 children 如果你想要像捆绑这样的子文章。