对于正在工作的项目,我们使用的是PHPCR-ODM。我们有一个包含以下字段的文档:
/**
* @var \Doctrine\Common\Collections\ArrayCollection
* @PHPCRODM\ReferenceMany(targetDocument="SystemSize")
*/
private $system_sizes;
我们希望为用户提供一个复选框列表 - 每个可能的SystemSize一个 - 然后搜索包含至少一个指定的SystemSize的任何文档。
例如,假设对象A具有Small和Large,对象B具有Medium和Large,而对象C具有Large。用户选择Small和Medium。我们应该找到对象A和B.我的一位同事建议创建一个附加字段来表示所有引用文档的列表 - 所以在这种情况下,一个名为system_sizes_list的文本字段 - 然后使用LIKE比较来搜索该字段。
鉴于我们在PHPCR-ODM中遇到的限制数量,这可能是最好的解决方案......但我真的不想相信它;肯定有更好的方法!我找不到它> _>
可能相关:PHPCR-ODM(当前?)不支持leftJoin()
,in()
或orX()->addMultiple()
(尽管您可以使用{{1}模拟orX()->addMultiple()
} ...)