LoginSignup
21
27

More than 5 years have passed since last update.

CakePHP2 findについて

Last updated at Posted at 2015-11-18

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

21
27
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
21
27