test

CakePHP Note

モデルのメソッド

UPDATE:2009.12.17

レコードの検索

read(mixed fields, mixed id)

プライマリーキーがidが一致するレコードを検索する。デフォルトのプライマリーキーは'id'という名前のフィールド。プライマリーキーはモデルの属性で変更できます。fieldsで取得するフィールドを文字列か配列で指定できる。fieldsに'null'を指定すると全てのフィールドのデータを取得できる。

find(string $type, array $params)

(旧)findAll(mixed $conditions, array $fields, string $order, int $limit, int $page, int $recursive)
(旧)find(mixed $conditions, array $fields, string $order, int $recursive)

$type

検索のタイプ、'count','first','all','list','neighbors'のいずれか。

  • count(レコード数)
  • first(最初のレコード)
  • all(全てのレコード)
  • list(セレクトタグなどのための特定キーと値によるシンプルな配列)

$params

conditions, limit, fields, order, limit, page, recursiveなどを配列で指定します。

conditions

検索条件を文字列か配列で指定します。テーブルを結合するケースがあるので、カラム名の指定は"モデル名.カラム名"で指定するのが良い。

fields

取得するカラム名を指定します。デフォルトは'null'で全てのデータを取得。
検索タイプが'list'の場合はkey=>valueの配列を取得します。次の通り

  1. 指定しない(idとdisplayFieldで指定したフィールドのデータを取得)
  2. 1つ指定(idと指定したフィールドのデータを$id=>$filedで取得)
  3. 2つ指定(指定したフィールドのデータを$fieldA=>$fieldB取得)
  4. 3つ指定(指定したフィールドのデータを$fieldC =>($fieldA=>$fieldB)で取得

order

ソート順を文字列か配列で指定します。

limit, page

取得するデータの範囲を指定します。ページ送りを行うときはコントローラのページネーションを使うと便利です。

$recursive

アソシエーションで指定した関連レコードの取得レベルを指定します。デフォルトは'null'

-1:メインのテーブルのみ

0:メインのテーブルとbelongTo,hasOneのアソシエーションまで

1:メインのテーブルとそのアソシエーションまで

2:メインのテーブルとそのアソシエーションとそのアソシエーションまで

レコードの特定カラム名での検索

findAllBy<fieldName>(string $value)
findBy<fieldName>(string $value)

PHP5とPHP4で<fieldName>の部分の書き方が違う。

その他

  • set($data)
  • validate()
  • isUnique(array('フィールド名'=>'値'))
  • schema(boolean $clear)(テーブル定義情報を取得。$clearをtrueにするとデータベースから再読み込み)