указать ключевые значения для возврата $query-›fetchArray()?

Используя Doctrine, я делаю запрос вроде этого:

$query = Doctrine_Query::create()->select('id,name')->from('people');
return $query->fetchArray();

Он возвращает объект, похожий на следующий массив массивов:

array(3) {
  [0]=>
  array(4) {
    ["id"]=>
    string(1) "34"
    ["name"]=>
    string(7) "John"
  }
  [1]=>
  array(4) {
    ["id"]=>
    string(1) "156"
    ["name"]=>
    string(6) "Bob"
  }
  [2]=>
  array(4) {
    ["id"]=>
    string(1) "27"
    ["name"]=>
    string(7) "Alex"
  }
}

Заметили, как ключи массива начинаются с 0, 1, 2 и т. д.? Мой вопрос: можно ли указать, откуда вы хотите получить значения ключей? Например, я хотел бы, чтобы значения ключа в приведенном выше случае были 34, 156, а затем 27.

Я заметил в документе Doctrine, что у обоих fetchArray() есть параметры, которые вы можете передать им, но ничего не говорится о том, что это за параметры...

public array fetchArray(string params)

http://www.doctrine-project.org/api/orm/1.2/doctrine/doctrine_query.html#fetchArray()

Кроме того, я, очевидно, могу просто повторно заполнить новый массив предпочтительными комбинациями ключ/значение, но я пытаюсь избежать дополнительной обработки.


person Jake Wilson    schedule 21.07.2011    source источник


Ответы (1)


Ознакомьтесь с INDEXBY ключевое слово DQL.

Попробуйте что-то вроде:

<?php
$query = Doctrine_Query::create()
           ->select('p.id,p.name')
           ->from('people p INDEXBY p.id');
person timdev    schedule 21.07.2011
comment
Это помогло. Спасибо! Также я нашел метод Doctrine_Collection->setColumnKey(), но, похоже, он ничего не сделал. - person Jake Wilson; 21.07.2011