私のフォームの 1 つで、データベースでクエリを実行することによってオプションが動的に生成されるドロップダウン (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の方が高速なので、直接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()))));
}
}
この結果、私のドロップダウンは私のテーブルにあるもので適切に満たされます。しかし、警告も表示されます:
警告: lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/database/sfDoctrineConnectionProfiler.class.php の 196 行目の foreach() に無効な引数が指定されました
警告: join() [function.join]: lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/database/sfDoctrineConnectionProfiler.class.php の 141 行目に無効な引数が渡されました
警告: lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/database/sfDoctrineConnectionProfiler.class.php の 196 行目の foreach() に無効な引数が指定されました
警告: lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/debug/sfDoctrineConnectionProfiler.class.php の 117 行目の foreach() に無効な引数が指定されました
私がここで間違っていることは何かわかりますか??? 奇妙なことに、ドロップダウンはうまく見えます。