2016-03-03 70 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。