我的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表明它只需要运行一次这个查询?
答案 0 :(得分:2)
您可以从Doctrine's result cache获取此结果。要实现这一点,您必须配置结果缓存,然后为sfWidgetFormChoice对应的查询激活它(或者是sfWidgetFormDoctrineChoice?)。问题是你无法访问这段代码。或者不是吗?查看sfWidgetFormDoctrineChoice的选项。您可以通过选项“table_method”指定方法。您所要做的就是编写查询并在其上激活结果缓存,然后就完成了。祝你好运!