检索文档 - 过滤
Retrieve Documents - filtering
可以使用以下方法简单地过滤检索到的文档:
$dm->findBy(array('field' => 'value'))
但我需要一些更适合内容存储库细节的东西。
那么,有没有办法检索文档(例如相当于 "SELECT ... WHERE ..."),筛选条件为:
- 一个数组元素(例如,具有多个值的字段的第一个元素:类似于 arrayFields[0])
- 路径节点,例如我只想在给定路径下获取子项(但不使用文档的 getChildren() 方法),例如/cms/routes/categories - 这应该 return 只有在其路径(或 Id 字段)开头具有“/cms/routes/categories”的文档
?
似乎(还没有?)没有API提到的确切解决方案。 PHPCR(非 ODM)具有以某种方式完成这些任务的功能。
以上任务可以通过以下方式完成:
仅通过多值字段进行过滤。例如。如果您将 "authors" 字段作为数组,则 PHPCR 似乎可以按可用的第一作者正确排序和过滤文档;此外,在 PHPCR(同样,不是 ODM)API 中有一个等同于 in_array() PHP 的函数。它被视为任何其他(非多值)字段 - http://doctrine-phpcr-odm.readthedocs.org/en/latest/reference/query-builder-reference.html#literal
按路径过滤,有三种可能(我说的是第三种):
- "same":通过确切的 Id 路径,例如/cms/routes/article/title-of-article 只会 return 这个单一的特定结果 - http://doctrine-phpcr-odm.readthedocs.org/en/latest/reference/query-builder-reference.html#same
- "child":通过路径的直接子节点,例如/cms/routes/article 将 return 所有 /cms/routes/article 级别的直系子级(这个 /cms/routes/article/title-of-article 将 return 编辑等)- http://doctrine-phpcr-odm.readthedocs.org/en/latest/reference/query-builder-reference.html#child
- "descendant" 以下任何嵌套级别的子级,例如/cms/routes 将 return 也 /cms/routes/article/title-of-article (与第二种情况不同)- http://doctrine-phpcr-odm.readthedocs.org/en/latest/reference/query-builder-reference.html#descendant
有关更多信息,这里有可用的文档:http://doctrine-phpcr-odm.readthedocs.org/en/latest/reference/query-builder.html and http://doctrine-phpcr-odm.readthedocs.org/en/latest/reference/query-builder-reference.html
可以使用以下方法简单地过滤检索到的文档:
$dm->findBy(array('field' => 'value'))
但我需要一些更适合内容存储库细节的东西。 那么,有没有办法检索文档(例如相当于 "SELECT ... WHERE ..."),筛选条件为:
- 一个数组元素(例如,具有多个值的字段的第一个元素:类似于 arrayFields[0])
- 路径节点,例如我只想在给定路径下获取子项(但不使用文档的 getChildren() 方法),例如/cms/routes/categories - 这应该 return 只有在其路径(或 Id 字段)开头具有“/cms/routes/categories”的文档
?
似乎(还没有?)没有API提到的确切解决方案。 PHPCR(非 ODM)具有以某种方式完成这些任务的功能。
以上任务可以通过以下方式完成:
仅通过多值字段进行过滤。例如。如果您将 "authors" 字段作为数组,则 PHPCR 似乎可以按可用的第一作者正确排序和过滤文档;此外,在 PHPCR(同样,不是 ODM)API 中有一个等同于 in_array() PHP 的函数。它被视为任何其他(非多值)字段 - http://doctrine-phpcr-odm.readthedocs.org/en/latest/reference/query-builder-reference.html#literal
按路径过滤,有三种可能(我说的是第三种):
- "same":通过确切的 Id 路径,例如/cms/routes/article/title-of-article 只会 return 这个单一的特定结果 - http://doctrine-phpcr-odm.readthedocs.org/en/latest/reference/query-builder-reference.html#same
- "child":通过路径的直接子节点,例如/cms/routes/article 将 return 所有 /cms/routes/article 级别的直系子级(这个 /cms/routes/article/title-of-article 将 return 编辑等)- http://doctrine-phpcr-odm.readthedocs.org/en/latest/reference/query-builder-reference.html#child
- "descendant" 以下任何嵌套级别的子级,例如/cms/routes 将 return 也 /cms/routes/article/title-of-article (与第二种情况不同)- http://doctrine-phpcr-odm.readthedocs.org/en/latest/reference/query-builder-reference.html#descendant
有关更多信息,这里有可用的文档:http://doctrine-phpcr-odm.readthedocs.org/en/latest/reference/query-builder.html and http://doctrine-phpcr-odm.readthedocs.org/en/latest/reference/query-builder-reference.html