Symfony 1.4, Доктрина (Doctrine :: HYDRATE_ARRAY, не кратный) - PullRequest
0 голосов
/ 28 марта 2012

Я просто преподаю Symfony и Doctrine. Я не знаю, как можно получить массив из 1 строки вместо многорядного массива в Doctrine. Я использую это:

$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
        )

)

Кто-то знает, как я могу это сделать?

Ответы [ 3 ]

1 голос
/ 05 апреля 2012

Я использую только

$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 голосов
/ 30 марта 2012

Использование ключевого слова 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);
0 голосов
/ 28 марта 2012

Вы пытались явно добавить выборку с нужными столбцами?

$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);
...