単純なクエリを実行していて、配列を取得したいと考えています。Kohana 3 ガイドに付属の ORM チュートリアルに基づいて、次のことができると考えました。
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' ));
これが意図的なものなのか疑問に思っています。もしそうなら、なぜですか? 連想配列の配列を作成したい場合、より良い回避策は何ですか?