【CakePHP】テーブルに項目を追加した際に変更するファイルたち

あおいくら

CakePHPを久しぶりに触った際、テーブルの項目追加に戸惑ったので忘備録を残しておく

テーブルに項目を追加する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だけど、
他テーブルとかでShopsselectしてる箇所とかがもしあれば随時追加する

$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>

\ 案件のご依頼・ご相談はこちらから /