【Table】データの取り出し
クエリの生成
findメソッド
findメソッドでクエリを生成。
<?php $query = $articles->find('all'); // この時点ではクエリーは走らない。 $results = $query->all(); // all() の呼び出しはクエリーを実行し、結果セットを返す foreach ($query as $row) {...} // イテレーションはクエリーを実行する ?>
第一引数
<?php // 全件取得 $query = $articles->find('all'); // データを連想配列として取得 $query = $articles->find('list', [ 'keyField' => 'slug', // キーを指定 デフォルトではid 'valueField' => 'title' // 値を指定 デフォルトではdisplayFieldで指定された列 ]); // 取得結果 // $query->toArray() = [ // 'first-post' => '最初の投稿', // 'second-article-i-wrote' => '私が書いた2つ目の記事', // ]; // スレッド状のデータを取得 $query = $articles->find('thread'); ?>
カスタムFinder
findFooBarメソッドによって、fooBarという名前のカスタムfinderが作れる。
<?php public function findOwnedBy(Query $query, array $options) { $user = $options['user']; return $query->where(['author_id' => $user->id]); } $query = $articles->find('ownedBy', ['user' => $userEntity]); // 呼び出し ?>
クエリの実行
クエリ実行パターン① findの第二引数にオプションを指定する
<?php $query = $articles->find('all', [ 'conditions' => ['Articles.created >' => new DateTime('-10 days')], 'contain' => ['Authors', 'Comments'], 'limit' => 10 ]); ?>
findで使えるオプション
- conditions WHERE
- limit LIMIT
- offset 指定した整数番目からデータを取得する
- contain 関連をイーガーロード (eager load) する
- fields 列を指定する
- group GROUP BY
- having HAVING
- join JOIN
- order ORDER BY
クエリ実行パターン② クエリオブジェクトにメソッドを呼び出す
<?php $articles->find('all')->first(); // 最初のレコードを取得 $articles->find('all')->count(); // レコードの件数を取得 $articles->find('list')->toArray(); // レコードを連想配列として取得 ?>