読者です 読者をやめる 読者になる 読者になる

たなちの開発日誌

プログラミングのメモを中心に気になったことを書いていきます。

【cakePHP3】find()について all,firstとは?

http://book.cakephp.org/3.0/ja/orm/retrieving-data-and-resultsets.html
から抜粋

find()メソッドの戻り値はQueryオブジェクト。
Queryオブジェクトは行のフェッチ、配列への変換、もしくは all()メソッドの呼び出しをするまでは実行されない。

<?php
// すべての article を検索、この時点ではクエリは走らない。
$query = $articles->find('all');

・行フェッチ

<?php
// イテレーションはクエリを実行する
foreach ($query as $row) {
}

・配列への変換。

<?php
// クエリから配列への変換はクエリを実行する
$results = $query->toArray();

selectエレメントで連想配列が必要なときによく使う。

<?php
// コントローラやテーブルのメソッド内で
$query = $articles->find('list', [
    'keyField' => 'slug',
    'valueField' => 'title'
]);
$data = $query->toArray();

・all

<?php
// クエリを実行し、結果セットを返す
$results = $query->all();

・first
first() メソッドによりクエリから1つ目の行だけをフェッチすることができます。
クエリがまだ実行されいないなら、 LIMIT 1 句が適用されます。

<?php
// コントローラやテーブルのメソッド内で
$query = $articles->find('all', [
    'order' => ['Articles.created' => 'DESC']
]);
$row = $query->first();