symfony执行多个查询以填充重复的表单字段

时间:2011-02-13 14:08:18

标签: symfony1 doctrine symfony-forms

我的symfony项目有一个对象A,它与对象B有一对多的关系,即

A
 B
 B
 B
A
 B
A
 B
 B

在A的表单中,我使用$ this-> embedRelation('B')来显示用于输入/编辑B的表格。到目前为止一切都很好。

B的表单包含一个自动生成的sfWidgetFormChoice,它自动从数据库中填充。但是,当表单B中嵌入多个表单B时,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表明它只需要运行一次这个查询?

1 个答案:

答案 0 :(得分:2)

您可以从Doctrine's result cache获取此结果。要实现这一点,您必须配置结果缓存,然后为sfWidgetFormChoice对应的查询激活它(或者是sfWidgetFormDoctrineChoice?)。问题是你无法访问这段代码。或者不是吗?查看sfWidgetFormDoctrineChoice的选项。您可以通过选项“table_method”指定方法。您所要做的就是编写查询并在其上激活结果缓存,然后就完成了。祝你好运!