2011-02-13 102 views
0

我symfony項目具有與(多個)對象B中的一對多的關係,即symfony中執行多個查詢來填充重複表單字段

A 
B 
B 
B 
A 
B 
A 
B 
B 

在形成用於物體A,I '使用$ this-> embedRelation('B')來顯示輸入/編輯B的表單。到目前爲止都是很好的。

B的表單包含一個自動生成的sfWidgetFormChoice,它自動從數據庫填充。然而,當有嵌入到A型B型的多occurances,symfony的查詢數據庫多次來填充sfWidgetFormChoice選擇控制:

SELECT b.bid AS b__bid, b.blah AS b__blah, FROM blah b 
SELECT b.bid AS b__bid, b.blah AS b__blah, FROM blah b 
SELECT b.bid AS b__bid, b.blah AS b__blah, FROM blah b 
SELECT b.bid AS b__bid, b.blah AS b__blah, FROM blah b 
SELECT b.bid AS b__bid, b.blah AS b__blah, FROM blah b 

是否有指示symfony中的一種方式,它只需運行該查詢一次?

回答

2

您可以從Doctrine's result cache中獲取此結果。要實現這一點,你必須配置結果緩存,然後激活它對應於sfWidgetFormChoice(或者它是sfWidgetFormDoctrineChoice?)的查詢。問題是你沒有訪問這段代碼。或者不是嗎?看看sfWidgetFormDoctrineChoice的選項。您可以通過選項「table_method」指定一個方法。您只需編寫查詢並在其上激活結果緩存,即可完成。祝你好運!