未分類

備忘録:CakePHP

■データの読み方

// パターン1
$this->Member->id = 1;
$data = $this->Member->read();
debug($data);

// パターン2
$data = $this->Member->read(null, 1);
debug($data);

// パターン3
$data = $this->Member->find('first', array('conditions'=>array('id'=>1)));
debug($data);

// 関連付けされたモデル
$this->Member->Meeting->id = 1;
$data = $this->Member->Meeting->read();
debug($data);

■知識

・$this : コントローラクラスのオブジェクト
・PaginatorComponent と PaginatorHelper は連携する
・add, edit, view メソッドが終了後に、対応する view を表示
・$this->test(); ---- AppController に定義されたメソッド
・コールバックメソッド
 ・コントローラのメソッド
 ・save メソッド
 ・モデル
・コントローラ → ビュー : set
・ビュー → レイアウト : ビューブロック (P150)
・画面に情報を出力。debug, echo どちらもOK。debug は () 必須。黄色で表示される。
・画面デザインの共通化 → エレメント
・画面ロジックの共通化 → ヘルパー
・PEAR = PHP Extension and Application Repositry - ライブラリ
・Smarty - テンプレートエンジン (CakePHP のビューに似ている)
・ActiveRecord (O/R マッパ) --- DB の定義情報を自動で読み取る
・コントローラからビューを表示するには render メソッドを使う。しかし、通常はメソッドと同じ名前のビューが、メソッド終了時に自動的に呼び出される。

$this->request : コントローラが受け取る・所有する全データ
$this->request->params : CakePHP 専用のリクエストパラメータ (/view/1/a:2/b:3)
$this->request->query : 従来型のリクエストパラメータ (/view?id=15&a=20&b=30)
$this->request->data :
$this->request->params['named']['a'] : /view/1/a:20/a:30 -----> 20, 30 (配列)
$this->request->params['named']['a'] : /view/1/a:20/b:30 -----> 20
$this->request->query['a'] : /view/1?a=20&a=30 -----> 20 (配列にはならない)
$this->request->query['a'] : /view/1?a=20&b=30 -----> 20
$this->request->data と $this->data は同一。

$this->Meeting->primaryKey

* DebugKit を入れると動かない。=AppController の設定は不要!
* アソシエーションがうまくいかない。=フィールド名は「単数形テーブル名+_id」!
* 同一テーブルに対する複数の外部キーによるアソシエーションができない。=HasMay と BelongsTo で解決!

参考リンク

http://cakephp.jp/modules/newbb/viewtopic.php?topic_id=1673&forum=6
http://www.tailtension.com/cakephp/1193/
http://cakephp.jp/modules/newbb/viewtopic.php?viewmode=flat&order=ASC&topic_id=901&forum=6&move=next&topic_time=1198116415

-未分類