2012-03-28 18 views
0

Ich unterrichte gerade Symfony und Lehre. Ich weiß nicht heiß, um 1 Zeile Array statt Multi-Array in Doctrine zu holen. ich mit diesem:Symfony 1.4, Doctrine (Lehre :: HYDRATE_ARRAY nicht-multiple)

$q = $this->createQuery('a') 
     ->innerJoin('a.Translation t') 
     ->andWhere('t.lang = ?', $language) 
     ->andWhere('t.name LIKE ?', 'somename%'); 

    return $q->execute(array(), Doctrine::HYDRATE_RECORD); 

Und dann bekomme ich so etwas wie:

Array 
(
    [0] => Array 
     (
      [id] => 1 
      [created_at] => 2012-03-19 17:40:52 
      [updated_at] => 2012-03-21 17:44:04 
      [created_by] => 1 
      [updated_by] => 1 
      [Translation] => Array 
       (
        [en] => Array 
         (
          [id] => 1 
          [name] => somename 
          [lang] => en 
          [slug] => somename 
         ) 

       ) 

     ) 

) 

Aber ich brauche

Array 
(
    [0] => Array 
     (
      [id] => 1 
      [created_at] => 2012-03-19 17:40:52 
      [updated_at] => 2012-03-21 17:44:04 
      [created_by] => 1 
      [updated_by] => 1 
      [id] => 1 
      [name] => somename 
      [lang] => en 
      [slug] => somename 
     ) 

) 

Einige Körper weiß, wie ich es machen kann?

+0

hinzufügen fetchOne() anstelle von execute()? –

Antwort

1

benutze ich nur

$q = $this->createQuery('a') 
    ->select('a.id as id, t.name as name') 
    ->leftJoin('a.Translation t') 
    ->where('t.name LIKE ?', $name.'%') 
    ->andWhere('t.lang = ?', $language); 
0

Haben Sie versucht, explizit eine Auswahl mit Spalten hinzuzufügen, die Sie benötigen?

$q = $this->createQuery('a') 
     ->select('a.id, a.created_at, a.updated_at, a.created_by, a.updated_by, t.id, t.name, t.lang, t.slug') 
     ->innerJoin('a.Translation t') 
     ->andWhere('t.lang = ?', $language) 
     ->andWhere('t.name LIKE ?', 'somename%'); 

return $q->execute(array(), Doctrine::HYDRATE_ARRAY); 
+0

Versucht, das gleiche Ergebnis. – user1256630

0

Verwenden Sie das Schlüsselwort WITH?

$q = $this->createQuery('a') 
     ->innerJoin('a.Translation t WITH t.lang = ?', $language) 
     ->where('t.name LIKE ?', 'somename%'); 
return $q->execute(NULL, Doctrine::HYDRATE_ARRAY);