[CakePHP1.3] 秀和システムの本 メモ5 - モデルクラスのメンバ変数とコールバック
書籍「CakePHP 1.3によるWebアプリケーション開発―オープンソース徹底活用」(秀和システム、掌田 津耶乃)のメモ その5。
データベースの利用 その2、モデルクラスのメンバ変数とコールバックメソッド。
モデルクラスのメンバ変数
$useDbConfig = '設定変数名の文字列'
database.php (メモ その4) 内に記述した
どのデータベース接続($defaultや$testあるいは自分で接続情報を記述した変数名)を利用するかを指定する。
変数名を文字列として指定する。
このメンバ変数が指定されないときには、$default が利用される。
$useDbConfig = 'test';
$useTable = 'テーブル名の文字列'
使用するテーブル名を文字列で指定する。
このメンバ変数が指定されないときには、モデルクラス名から自動的に生成される。
たとえば、モデルクラス名が「RedApple」だった場合、これを複数形のアンダースコア記法にした「red_apples」が使用するテーブル名となる。
$useTable = 'my_apples';
$primaryKey = 'フィールド名の文字列'
主キー列の列名を文字列で指定する。
このメンバ変数が指定されないときには、id列を主キー列として扱う。
$primaryKey = 'code';
$displayField = 'フィールド名の文字列'
find('list')メソッド (メモ その4) で抽出する列名を、 文字列で指定する。
このメンバ変数が指定されないときには、name列あるいはtitle列が抽出される。
また、find('list', array( 'fields' => 'username' ) ); のように、第2引数で抽出するフィールド名を指定した場合、
それが優先される。
$displayField = 'username';
$order = 'モデル名.フィールド名 + {ASC|DESC}'、$order = 並び順配列
ORDER BYの指定。1列のみの場合、文字列で指定する。
また、複数列ある場合には、配列で指定する。
$order = 'RedApple.name DESC'; $order = array( 'RedApple.name DESC', 'RedApple.category_id ASC', );
$data
findメソッドなどで抽出したデータが保存される変数。
たとえば、find('all') の場合、次のような配列となっている。
$arr[行番号(0始まり)][モデル名][フィールと名]
モデルクラスのコールバックメソッド
beforeFind( SQL文配列 )
findメソッド呼び出し前に、beforeFindメソッドが呼び出される。
引数に、実行前のSQL文に関する連想配列が渡されるので、必要なら、これを修正し、この配列を戻り値として返す。
引数
- SQL文配列
- findメソッドの第2引数 オプション連想配列 (メモ その4)と同じ形式。
必要なら修正する。Array ( [conditions] => [fields] => [joins] => Array ( ) [limit] => [offset] => [order] => Array ( ) [page] => [group] => [callbacks] => )
戻り値
- 引数で受け取った SQL文配列 を返す。
例
function beforeFind( $queryData ) { if ( empty($queryData['limit']) ) { $queryData['limit'] = 10; } return $queryData; }
afterFind( 結果データ, 主キー )
findメソッド呼び出し後に、afterFindメソッドが呼び出される。
引数に、抽出したデータと主キーが渡される。必要なら、抽出データを修正し、戻り値として返す。
引数
- 結果データ
- 抽出結果のデータ配列。findメソッドの戻り値 (メモ その4) のデータ。
必要なら修正する。 - 主キー (?)
- (よく分からない。)
戻り値
- 引数で受け取った 結果データ を返す。
例
function afterFind( $result, $primary ) { for( $i = 0; $i < count($result); $i++ ) { if ( $result[$i]['RedApple']['stock'] == 0 ) { array_splice( $result, $i, 1, NULL ); } } return $result; }
beforeSave()、afterSave()
saveメソッド (メモ その4) の実行前に beforeSave が、実行後に afterSave が呼び出される。
引数
- なし
戻り値
- beforeSave のみ
- FALSE … 保存処理を中止する。
TRUE … 保存処理を続行する。
beforeDelete()、afterDelete()
deleteメソッド (メモ その4) の実行前に beforeDelete が、実行後に afterDelete が呼び出される。
引数
- なし
戻り値
- beforeDelete のみ
- FALSE … 保存処理を中止する。
TRUE … 保存処理を続行する。
onError()
SQL文 SELECT、INSERT、UPDATE、DELETE のいずれかが実行され、エラーが発生したときに onErrorメソッドが呼び出される。
引数
- なし
戻り値
- なし
関連
- メモ その4 - データベースの利用1 (2012-05-31)
- メモ その3 - Formヘルパーの利用 (2012-05-30)
- メモ その2 (2012-05-22)
- メモ その1 (2012-05-18)
« [CakePHP1.3] 秀和システムの本 メモ4 - データベースの利用1 | トップページ | ウイルスバスターのポップアップ広告を消す »
「プログラム・スクリプト」カテゴリの記事
- [CakePHP1.3] 秀和システムの本 メモ5 - モデルクラスのメンバ変数とコールバック(2012.06.04)
- [CakePHP1.3] 秀和システムの本 メモ4 - データベースの利用1(2012.05.31)
- [CakePHP1.3] 秀和システムの本 メモ3 - Formヘルパー(2012.05.30)
- [CakePHP1.3] CakePHP 1.3 によるWebアプリケーション開発(秀和システム) のメモ2(2012.05.22)
- [CakePHP1.3] CakePHP 1.3 によるWebアプリケーション開発(秀和システム) のメモ(2012.05.18)