Я выполняю простой запрос и хочу вернуть массив.
Основываясь на руководстве ORM, которое идет вместе с руководством по Kohana 3, я подумал, что смогу сделать следующее:
ORM::factory('user')->find_all()->as_array();
Но это, кажется, дает мне массив объектов модели (то есть массив (User_Model1, User_Model2 ...
Глядя на источник, я вижу, что я могу легко это исправить, взломав следующий патч.
modules/database/classes/kohana/database/result.php
@@ -94,7 +94,7 @@
foreach ($this as $row)
{
- $results[] = $row;
+ $results[] = $row->as_array();
Что больше соответствует тому, что написано в руководстве пользователя:
Мощной особенностью ORM является метод ORM :: as_array, который возвращает данную запись в виде массива. Если используется с ORM :: find_all, будет возвращен массив всех записей. Хороший пример того, когда это полезно, для списка выбора:
// Показать поле выбора имен пользователей (используя id в качестве значений) echo
Form :: select ('user', ORM :: factory ('user') -> find_all () -> as_array ('id', 'username'));
Интересно, это намеренно, если да, то почему?
Что может быть лучше, если я хочу создать массив ассоциативных массивов?