Tableaux à une dimension avec Doctrine

Quand on vient du monde SQL, certaines choses simples deviennent un véritable casse tête avec Doctrine. J’avais besoin de retourner un tableau de valeurs de la forme array(key => value) avec des données venant d’une table MySQL. Rien de bien sorcier jusque là, je me lance donc dans l’écriture de ma fonction :

  public function getMyArray()
  {
    $q = Doctrine_Query::create()
     ->select('t.id, t.name')  
     ->from('MaTable t');

     return $q->fetchArray();
  }

Et là c’est le drame ! Voilà le tableau retourné par Doctrine (tableau à deux dimensions) :

array
  0 =>
    array
      'id' => int 1
      'name' => string 'foo'
  1 =>
    array
      'id' => int 2
      'name' => string 'bar'

Pour récupérer les données sous forme d’un tableau à une dimension j’étais obligé de rajouter deux boucles dans la fonction ce qui est complètement stupide. Heureusement j’ai fini par trouver la solution (non sans mal) en tombant sur ce sujet. Doctrine dispose d’une méthode toute prête pour renvoyer un array simple

  public function getOneDimentionalArray()
  {
    $q = Doctrine_Query::create()
     ->select('t.id, t.name')  
     ->from('MaTable t')
     ->execute();

    return $q->toKeyValueArray('id', 'name');
  }

Ce qui nous renvoie bien :

array
  1 => string 'foo'
  2 => string 'bar'

Voilà, un article un peu léger au niveau du contenu mais qui pourra éventuellement servir à d’autres

Laisser un commentaire

Vous pouvez ces balises HTML dans votre commentaire :
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Current month ye@r day *