テーブルに項目を追加するSQL
- 例えばショップテーブルに
note
という備考カラムを追加した場合
ALTER TABLE shops ADD note varchar(255);
テーブルに紐づくEntityクラスに追記する
- /src/Model/Entity/Product.php
// (...省略)
* @property string $note // ⭐️ 追加
*/
class Shop extends Entity
{
protected $_accessible = [
// (...省略)
'note' => true, // ⭐️ 追加
];
}
テーブルに紐づくTableクラスに追記する
- /src/Model/Table/ShopsTable.php
// (...省略)
class ShopsTable extends AppTable
{
// (...省略)
public function validationDefault(Validator $validator)
{
// (...省略)
// ⭐️ 追加
$validator
->scalar('note')
->maxLength('note', 255)
->allowEmpty('note');
}
}
基本的にはこれだけでOKだけど、
他テーブルとかでShopsをselect
してる箇所とかがもしあれば随時追加する
$validator->integer('カラム名');
$validator->scalar('カラム名');
integer
の場合は値を整数型に、scaler
の場合はテキスト型に設定される
キャッシュを削除する
- これをしないと反映されなかった...
bin/cake cache clear_all
bin/cake: command not found エラーが出た場合は下記にするといけるはず
chmod 755 bin/cake
bin/cake cache clear_all
必要に応じてTemplateに追加
- /src/Template/Shops/create.ctp
<div>
<label>備考</label>
<?php
echo $this->Form->text('Shops.note');
echo $this->Form->error('Shops.note');
?>
</div>
CakePHPを久しぶりに触った際、テーブルの項目追加に戸惑ったので忘備録を残しておく