1. get()
get はuniqueに存在しているprimary keyで検索する。 そのため、primary keyが存在しない場合はエラーを吐く。
以下のコードは【cakePHP】データ抽出 findとgetの違いは何?からコピペしたものです。
// コントローラやテーブルのメソッド内で // 単一の article を取得する $article = $articles->get($id); // 単一の article と、それに関連する comment を取得する。 $article = $articles->get($id, [ 'contain' => ['Comments'] ]);
2. find()
find はエンティティを返す。ちなみに以下のコードだけでは何もクエリは実行されていないそう。
ドキュメントにも
The return value of any find() method is always a Cake\ORM\Query object.
と書いてあるようにCake\ORM\Query
を返す。
$query = $articles->find('all');
ドキュメントからコピペしてきたものだが、以下のようにクエリは実行される。
// イテレーションはクエリを実行する foreach ($query as $row) { } // all() の呼び出しはクエリを実行し、結果セットを返す $results = $query->all(); // 結果セットがあれば すべての行を取得できる $data = $results->toArray(); // クエリから配列への変換はクエリを実行する $results = $query->toArray();