CakePHP2のfindメソッドの解説になります。
findとは
CakePHPフレームワークで使用できるDBの検索、取得を行うメソッドです。
SQLを書かずに簡単にデータの取得が出来ます。
サンプルコード
find(
'all',
[
'conditions' => ['Model.field' => $thisValue], //検索条件の配列
'recursive' => 1, //int
'fields' => ['Model.field1', 'DISTINCT Model.field2'], //フィールド名の配列
'order' => ['Model.created', 'Model.field3 DESC'], //並び順を文字列または配列で指定
'group' => ['Model.field'], //GROUP BYのフィールド
'limit' => n, //int
'page' => n, //int
'offset' => n, //int
'callbacks' => true //falseの他に'before'、'after'を指定できます
]);
解説
find([string], [array]);
###第1引数:(string)
-
all
- 配列を返す
-
first
- 一行のみ返す
-
list
- インデックス付きの配列を返す→formのセレクトに使うと便利
-
count
- 整数を返す
-
neighbors
- 前後の行を返す
-
threaded
- 入れ子になった配列を返します
###第2引数:(array)
-
conditions:(array)検索条件
['Model.id' => '1'],//idが1
['Model.id >' => '1'],//idが1より大きい
-
recursive:(int)取得範囲の設定
-1 Group のデータだけを取得します。join しません。(最速
0 Group のデータとそのドメインを取得します。
1 1つの Group とそのドメインとそれに関連した User を取得します。(defalt
2 1つの Group とそのドメインとそれに関連した User と各 User に関連した Article を取得します。
-
fields:(array)取得する列選択
fieldsを指定しないと全てのフィールドが取得される
DISTINCT:重複した行をまとめる
-
order:(array)並び順
DESC:降順
ASC :昇順
-
group:(array) =GROUP BY@SQL
指定したカラム名の値が同じものが同じグループとなります。
複数のカラムを指定した場合は、値の組み合わせが同じものでグループ化されます。
-
limit:(int)取得数制限
-
page:(int)取得するページ番号(limitと併用
-
offset:(int)データの取得開始位置を指定
-
callbacks:(int)コールバックを実行するか
save前後、varidate前後等設定可能
参考
cake公式
http://book.cakephp.org/2.0/ja/models/model-attributes.html
callbacks について
http://book.cakephp.org/2.0/ja/models/callback-methods.html
CakePHP2 findまとめ
http://cakephp.popotoo.com/db/221/
GroupBy
http://www.dbonline.jp/sqlite/select/index14.html
ちなみに
CakePHP3だとこんな感じ
http://qiita.com/kozo/items/87dc9f725e71dd742468