代码之家  ›  专栏  ›  技术社区  ›  forsberg

检索文档-筛选

  •  1
  • forsberg  · 技术社区  · 9 年前

    可以使用以下方法简单地过滤检索到的文档:

    $dm->findBy(array('field' => 'value'))
    

    但我需要一些更适合内容存储库细节的东西。 那么,是否有一种检索文档的方法(例如,相当于“SELECT…WHERE…”),通过以下方式进行筛选:

    • 数组元素(例如,通过具有多个值的字段的第一个元素:类似于arrayFields[0])
    • 路径节点,例如,我希望在给定路径下仅获取子级(但不使用文档的getChildren()方法),例如/cms/routes/categories-这应该只返回路径(或Id字段)开头具有“/cms/rroutes/cate类别”的文档

    ?

    1 回复  |  直到 9 年前
        1
  •  0
  •   forsberg    9 年前

    似乎(目前)还没有适用于上述精确解决方案的API。PHPCR(而非ODM)具有某些特性,这些特性在某种程度上可以完成这些任务。

    上述任务可通过以下方式实现:

    1. 仅通过多值字段进行过滤。E、 g.如果您将“authors”字段作为一个数组,PHPCR似乎可以按可用的第一作者正确排序和过滤文档;此外,在PHPCR(同样,不是ODM)API中,还有一个与in_array()PHP函数等效的函数。它被视为任何其他(非多值)字段- http://doctrine-phpcr-odm.readthedocs.org/en/latest/reference/query-builder-reference.html#literal

    2. 通过路径过滤,有三种可能性(我根据需要提到的是第三种):

    有关更多信息,请参阅以下文档: http://doctrine-phpcr-odm.readthedocs.org/en/latest/reference/query-builder.html http://doctrine-phpcr-odm.readthedocs.org/en/latest/reference/query-builder-reference.html