检索文档 - 过滤

时间:2015-03-21 09:55:10

标签: doctrine-odm doctrine-phpcr

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

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

但是我需要一些更适合Content Repository细节的东西。 那么,有没有办法检索文档(例如相当于“SELECT ... WHERE ...”),过滤方式为:

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

1 个答案:

答案 0 :(得分:0)

对于所提到的确切解决方案,似乎(但是?)没有可用的API。但是,PHPCR(不是ODM)具有以某种方式完成这些任务的功能。

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

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

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

  3. 有关详情,请参阅以下文档:http://doctrine-phpcr-odm.readthedocs.org/en/latest/reference/query-builder.htmlhttp://doctrine-phpcr-odm.readthedocs.org/en/latest/reference/query-builder-reference.html