在我的一个表单中,我想要一个下拉列表(sfWidgetFormChoice),其中选项是通过对数据库执行查询来动态生成的。
更准确地说,我将列出我在表中拥有的所有版本。查询看起来像这样:
select distinct version from mytable order by version desc
到目前为止我有什么但不起作用:
class myForm extends sfForm
$query = "select distinct version from mytable order by version desc";
$versions = Doctrine_Manager::getInstance()->getCurrentConnection()->fetchAssoc($query);
public function configure()
$this->setWidgets(array('version' => new sfWidgetFormChoice(array('choices' => self::$versions))));
编辑:
谢谢你们的回答!非常感激!
无论如何,您的解决方案都基于拥有桌子的模型。我宁愿直接拥有一个 PDO,因为它更快。
在Symfony 文档中,我在“使用原始 SQL 查询”下找到了我正在寻找的内容。
所以我扩展了我的表格以结束:
class myForm extends sfForm
{
public function getVersions()
{
$connection = Doctrine_Manager::connection();
$query = "select distinct version from mytable order by version desc";
$statement = $connection->prepare($query);
$statement->execute();
$resultset = $statement->fetchAll(PDO::FETCH_COLUMN, 0);
return $resultset;
}
public function configure()
{
$this->setWidgets(array('version' => new sfWidgetFormChoice(array('choices' => self::getVersions()))));
}
}
因此,我的下拉列表会正确填充我表中的内容,耶!但我也收到警告:
警告:在第 196 行的 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/database/sfDoctrineConnectionProfiler.class.php 中为 foreach() 提供的参数无效
警告:join() [function.join]:在第 141 行的 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/database/sfDoctrineConnectionProfiler.class.php 中传递的参数无效
警告:在第 196 行的 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/database/sfDoctrineConnectionProfiler.class.php 中为 foreach() 提供的参数无效
警告:在第 117 行的 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/debug/sfDoctrineConnectionProfiler.class.php 中为 foreach() 提供的参数无效
知道我在这里做错了什么吗???奇怪的是,下拉菜单看起来不错。