0

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

A
 B
 B
 B
A
 B
A
 B
 B

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

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

4

1 回答 1

2

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

于 2011-02-13T15:38:18.827 回答