CakePHP はネストされた配列を返し、メソッドのオブジェクトのコレクションは返しませんModel->find
。CakePHP はモデルのコレクションを取得する方法を提供していますか?
3 に答える
いいえ、好むと好まざるとにかかわらず、cakeは多次元配列をデータとして使用します(通常のCRUD関数の場合)。ただし、必要に応じて、findメソッドを再定義して、配列をオブジェクトにマップすることもできます。
このブログ投稿で概説されているように、このSet
クラスを使用して配列をオブジェクトにマップ(およびその逆) できます。
CakePHP (PHP 4 互換の時代) は、オブジェクトよりも配列を使用することを選択しました。これは、PHP には、配列を簡単に操作できるようにする配列操作関数が満載されているためです。PHP は配列が大好きなので、PHP の長所と当時の優れた設計パターンとのバランスをとることが理にかなっていたと思います。
CakePHP 2.0 モデルは引き続き配列を返すと思いますが (下位互換性があると思います)、Lithium フレームワーク(CakePHP 3.0 (PHP 5.3+ のみをサポート) を目指して誕生した) または別の PHPを参照することをお勧めします。 5 つ以上のフレームワークがあります。
これらの新しいフレームワークは、PHP 5 の新しい OOP 機能を十分に活用する傾向があり、レコードをオブジェクトとして返す傾向があります (Lithium APIのモデルとマニュアルを参照してください)。
afterFind() で変換できます。しかし、なぜそれが必要なのですか?