CakePHP4初心者向けの最低限できないといけない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