自分用のCakePHPメモです。
おぼえがき
DB処理はエンティティに対して実行する。
find()メソッドの返り値をQueryと言う。検索時はQueryをパースしていく。
コントローラーはビューの起動時に実行される。
フォームのcreateの引数にエンティティを渡すことでそのエンティティに応じたフォームが生成される。
エンティティの作り方(CREATE文)
空のエンティティを作って
$person = $this->Persons->newEntity();
↓
フォームからrequestで値を取り出してマージする。
$person = $this->Persons->patchEntity($person, $this->request->data);
↓
セーブする
$this->Persons->save($person)
エンティティの修正(UPDATE文)
GETの値のエンティティを取得
$person = $this->Persons->get($id);
↓
確かにコントローラーから投げられているかをチェックする
if ($this->request->is(['post', 'put']))
↓
SUBMITされたdataをマージする
$person = $this->Persons->patchEntity($person, $this->request->data);
↓
セーブする
$this->Persons->save($person)
エンティティの削除(DELETE文)
GETの値のエンティティを取得
$person = $this->Persons->get($id);
↓
確かにコントローラーから投げられているかをチェックする
if ($this->request->is(['post', 'put']))
↓
エンティティの配列から削除する
$this->Persons->delete($person)
エンティティの検索(SELECT文)
フォームから検索基準を受け取る
$find = $this->request->data['フォーム名'];
↓
where句に検索基準を渡す(find以降がだいたいSQL)
$persons = $this->Persons->find()
->select(['id', 'name'])
->order(['name' =>'Asc'])
->where(["name like " => '%' . $find . '%']);
↓
ビューはこんな感じで受け取る
<?php foreach ($persons as $person): ?>
<tr>
<td><?= h($person->id) ?></td>
<td><?= h($person->name) ?></td>
<td><?= h($person->age) ?></td>
<td><?= h($person->mail) ?></td>
</tr>
<?php endforeach; ?>