2016-03-03 71 views
0

我有一个复杂的数据结构是这样的:Extbase复杂的查询问题

leve1Model->1:level2Model->n:level3Model->1:value1 
             ->1:level4Model->1:value2 

我需要的是找到所有level1Model情况下,这是level2Model实例包含具有一定值1和的level4Model实例也有一个level3Model实例一定的价值2。

我是比较新的Extbase和它的数据库抽象,但是我想我可以做这样的事情:

$query->contains('level2Model.level3Model.value1', val1), 

,但是这给了我关于不支持的属性value1错误。但即使它工作,我不知道如何确保包含的实例也符合要求的level4Model->1:value2条件。

那么有没有一种方法可以正确使用这种查询的抽象层(以及我将如何去做?)或者我必须诉诸普通的SQL?

回答

0

查询生成器在这里帮不了您的忙。如果第二级模型存储在对象存储中,则可以针对这些对象的uid进行查询。但是,只要查询生成器将带您。您的查询太复杂。您必须将查询拆分为多个部分并重新过滤结果,但性能可能不佳。我会建议使用卫生等辅助函数,但将完成的SQL语句部分(字段,from,where等)传递给它。或者,您可以重新考虑这个数据结构,它是您应用程序的重要组成部分,使其更符合extbase。