CakePHP4初心者向けの最低限できないといけないbakeコマンドまとめ

CakePHP初心者向けの最低限できないといけないbakeコマンドまとめ

699 回閲覧されました

みなさんこんにちは、jonioです。

CakePHPのbakeコマンドを頻繁に忘れてコマンドのたびにいちいち探すのが面倒なのでこのメモを残します。

細かく見ると他にもコマンドがありますがこれができれば充分な気がします。

CakePHPのバージョン

4.5.4を使っていますがバージョン3の場合は記述やコマンドが違う可能性があります。

コントローラーの作成

コマンドは下記になります。

bin/cake bake controller テーブル名s

配置するディレクトリ名を指定する場合は下記になります。

bin/cake bake controller テーブル名s  -- prefix ディレクトリ名

ビューファイルの作成

コマンドは下記になります。

bin/cake bake template コントローラー名s

配置するディレクトリ名を指定する場合は下記になります。

bin/cake bake template コントローラー名s  -- prefix ディレクトリ名

マイグレーションファイルの作成

コマンドは下記になります。

bin/cake bake migration Createテーブル名s

テーブルを作成

マイグレーションファイルを作成して中身の記述をしてから下記のコマンドを叩きます。

bin/cake migrations migrate

マイグレーションファイルを実行する前に戻す

コマンドは下記になります。

bin/cake migrations rollback

モデルを作成

コマンドは下記になります。

bin/cake bake model テーブル名s

テーブルにカラムを追加

コマンドは下記になります。

bin/cake bake migration Add追加するカラム名Toテーブル名

テーブルのカラム名を変更

下記のコマンドを叩きます。

bin/cake bake migration Changeカラム名Toテーブル名s

カラム名とテーブル名の最初の文字は大文字にします。

カラム名はどのカラムを変更しようとしているかが分かるようにした方がいいです。

作成されたマイグレーションファイルに下記の記述をします、デフォルトはchangeメソッドですがこれのままカラム名を更新するとrollbackの時に弾かれるのでupメソッドとdownメソッドを使います。

public function up()
{
  $table = $this->table('テーブル名s');
  $table
  ->renameColumn('変更前のカラム名', '変更後のカラム名')
  ->update();
}

public function down()
{
  $table = $this->table('companies');
  $table
  ->renameColumn('変更後のカラム名', '変更前のカラム名')
  ->update();
}

そして下記のコマンドを叩けばカラム名が変更されます。

bin/cake migrations migrate

テーブルのカラムの設定を変更

下記のコマンドを叩きます。

bin/cake bake migration Changeカラム名Toテーブル名s

カラム名とテーブル名の最初の文字は大文字にします。

カラム名はどのカラムを変更しようとしているかが分かるようにした方がいいです。

作成されたマイグレーションファイルに下記の記述をします、デフォルトはchangeメソッドですがこれのままカラム名を更新するとrollbackの時に弾かれるのでupメソッドdownメソッドを使います。

public function up()
{
    $table = $this->table('samples');
    $table
    ->changeColumn('age', 'integer', [
          'limit' => 2,     //2に変更
        ]);
    $table->update();
}

public function down()
{
    $table = $this->table('samples');
    $table
    ->changeColumn('age', 'integer', [
      'limit' => 3,       //3は元々の値
    ]);
    ->update();
}

downメソッドには元々の設定を記述します。

そして下記のコマンドを叩けばカラム名が変更されます。

bin/cake migrations migrate

テーブルのカラムを削除

下記のコマンドを叩きます。

bin/cake bake migration Removeカラム名Fromテーブル名s

テーブル名とカラム名の最初の文字は大文字にします。

カラム名はどのカラムを変更しようとしているかが分かるようにした方がいいです。

作成されたマイグレーションファイルに下記の記述をします、デフォルトはchangeメソッドですがこれのままカラム名を更新するとrollbackの時に弾かれるのでupメソッドとdownメソッドを使います。

public function up()
{
  $table = $this->table('テーブル名s');
  $table->removeColumn('削除するカラム名');
  $table->update();
}

public function down()
{
  $table = $this->table('companies');
  $table->addColumn('role_type_id', 'integer', [
    'limit' => 11,
    'default' => null,
    'null' => false
  ]);
  $table->update();
}

11行目〜15行目の部分はカラムを作成した時と同じ記述をします。

そして下記のコマンドを叩けばカラムが削除されます。

bin/cake migrations migrate

テーブル名を変更

下記のコマンドを叩きます。

bin/cake bake migration Rename元々のテーブル名To新しいテーブル名

マイグレーションファイルに下記の記述をします。

<?php
declare(strict_types=1);

use Migrations\AbstractMigration;

class RenamechatsTochatRooms extends AbstractMigration
{
    /**
     * Change Method.
     *
     * More information on this method is available here:
     * https://book.cakephp.org/phinx/0/en/migrations.html#the-change-method
     * @return void
     */
    public function up()
    {
        $this->table('元々のテーブル名')->rename('新しいテーブル名')->update();
    }

    public function down()
    {
        $this->table('新しいテーブル名')->rename('元々のテーブル名')->update();
    }
}

そして下記のコマンドを叩けばテーブル名が変更されます。

bin/cake migrations migrate

テーブルを削除

下記のコマンドを叩きます。

bin/cake bake migration Dropテーブル名s

demoテーブルを削除するとします。

下記のコマンドを叩きます。

bin/cake bake migration Dropdemos

作成されるマイグレーションファイルを下記に変更します。

<?php
declare(strict_types=1);

use Migrations\AbstractMigration;

class Demos extends AbstractMigration
{
    /**
     * Change Method.
     *
     * More information on this method is available here:
     * https://book.cakephp.org/phinx/0/en/migrations.html#the-change-method
     * @return void
     */
    public function up()
    {
        $table = $this->table('demos');
        $table
        ->drop()
        ->save();
    }

    public function down()
    {
        $table = $this->table('demos');
        $table
        ->addColumn('カラム', 'string', [
            'null'    => true,
        ]);
        ->create();
    }
}

downメソッドはdemosテーブルを作成した時の記述です。

そして下記のコマンドを叩けばテーブルが削除されます。

bin/cake migrations migrate

Allコマンド

モデル・ビュー・コントローラーを同時に作成できます。

注意点はテーブルを作成してから行わないとエラーになります。

bin/cake bake all テーブル名s

Seedの作成

下記のコマンドを叩きます。

bin/cake bake seed テーブル名s

Seedのファイルに下記のように記述します。

class UsersSeed extends AbstractSeed
{
    /**
     * Run Method.
     *
     * Write your database seeder using this method.
     *
     * More information on writing seeds is available here:
     * http://docs.phinx.org/en/latest/seeding.html
     *
     * @return void
     */
    public function run()
    {
        $data = [
            [
                'id' => 1,
                'name' => '山田',
                'created' => date('Y-m-d H:i:s'),
                'modified' => date('Y-m-d H:i:s'),
                'deleted' => null,
            ],
            [
                'id' => 2,
                'name' => '田中',
                'created' => date('Y-m-d H:i:s'),
                'modified' => date('Y-m-d H:i:s'),
                'deleted' => null,
            ],
        ];

        $table = $this->table('users');
        $table->insert($data)->save();
    }
}

特定のSeedファイルのデータをテーブルに挿入する時のコマンドは下記です。

bin/cake migrations seed --seed ファイルのクラス名

全てのSeedファイルのデータをテーブルに挿入する時のコマンドは下記です。

bin/cake migrations seed