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

1205 回閲覧されました
みなさんこんにちは、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テーブル名sdemoテーブルを削除するとします。
下記のコマンドを叩きます。
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 migrateAllコマンド
モデル・ビュー・コントローラーを同時に作成できます。
注意点はテーブルを作成してから行わないとエラーになります。
bin/cake bake all テーブル名sSeedの作成
下記のコマンドを叩きます。
bin/cake bake seed テーブル名sSeedのファイルに下記のように記述します。
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