2012-03-28 7 views
0

나는 Symfony와 Doctrine을 가르친다. Doctrine에서 다중 행 배열 대신 1 행 배열을 가져 오는 것이 좋지 않습니다. 나는이 사용 :Symfony 1.4, Doctrine (Doctrine :: HYDRATE_ARRAY non-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); 

을 그리고 난 같은 얻을 :

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 
         ) 

       ) 

     ) 

) 

을하지만

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 
     ) 

) 

필요 일부 몸은 내가 그것을 만들 수있는 방법을 알고?

+0

)는 (실행 대신)을 대하여 fetchone를 (추가 사용할 수 있습니까? –

답변

1

난 그냥

$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

명시 적으로 선택 항목을 추가하려고 했습니까?

$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

시도, 같은 결과. – user1256630

0

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); 
관련 문제