Symfony Dropdown dynamisch befüllen

BaseBallBatBoy

Erfahrenes Mitglied
Hi,

Ich habe Symfony 1.4 mit Doctrine.

In einem Form habe ich ein Dropdown (sfWidgetFormChoice) welches ich dynamisch mit den Optionen befüllen muss. Welche Optionen das sind liefert mir ein DB Query.

Genauer gesagt werde ich alle vorhandenen Versionen in einer Tabelle auflisten. Das Query sieht ca. so aus: select distinct version from mytable order by version desc

Das habe ich bislang, funktioniert aber nicht:

PHP:
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))));


Gruss
BBBB
 
in der zwischenzeit habe ich was in der Doku gefunden: PDO
http://www.symfony-project.org/gentle-introduction/1_4/en/08-Inside-the-Model-Layer-Doctrine
"Using Raw SQL Queries"

Damit habe ich mein Form ergänzt:
PHP:
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()))));
  }
}

Damit wird mein Dropdown richtig gefüllt! ABER ich kriege auch Fehler:



Warning: Invalid argument supplied for foreach() in lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/database/sfDoctrineConnectionProfiler.class.php on line 196

Warning: join() [function.join]: Invalid arguments passed in lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/database/sfDoctrineConnectionProfiler.class.php on line 141

Warning: Invalid argument supplied for foreach() in lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/database/sfDoctrineConnectionProfiler.class.php on line 196

Warning: Invalid argument supplied for foreach() in lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/debug/sfDoctrineConnectionProfiler.class.php on line 117


Woran kann das liegen? Hat jemand eine Idee was ich ändern muss?
 
Falls es jemanden interessiert, ich habe die Lösung gefunden:

PHP:
class myForm extends sfForm
{
  public function getVersions()
  {
    $connection = Doctrine_Manager::getInstance()->getCurrentConnection()->getDBh();
    $query      = "select distinct version as key, version as value from mytable order by version desc";
    $statement  = $connection->prepare($query);
    $statement->execute();
    $resultset = $statement->fetchAll(PDO::FETCH_KEY_PAIR);

    return $resultset;
  }

  public function configure()
  {
    $this->setWidgets(array('version' => new sfWidgetFormChoice(array('choices' => self::getVersions()))));
  }
}
 
Zurück