CakePHP4のbakeコマンドで、コードを自動で生成する

2020年11月13日

CakePHPのbakeコマンドは、コードを自動で生成することができて、大変便利です。
コマンドを実行するだけで、CRUD機能を一通り持ったコードが出来上がるので、手順を紹介します。
本記事では2020年10月現在の最新版であるCakePHP4.1.5を使用しています。

bakeコマンドでは、テーブルを元にコードを生成する

bakeコマンドでは、実際のテーブルを元にコードを生成します。
今回はユーザーを管理する「users」テーブルを利用します。
テーブルのカラムは以下のようになっています。

bakeコマンドの実行

bin/cake bake all users

「all」というのは生成するコードの指定で、「all」と指定すると、すべてを生成します。
対象は以下の通りです。

  • src/Model/Table/UsersTable.php
  • src/Model/Entity/User.php
  • tests/Fixture/UsersFixture.php
  • tests/TestCase/Model/Table/UsersTableTest.php
  • src/Controller/UsersController.php
  • tests/TestCase/Controller/UsersControllerTest.php
  • templates/Users/index.php
  • templates/Users/view.php
  • templates/Users/add.php
  • templates/Users/edit.php

MVCに対応した各コードやテスト用のコードが生成されます。

生成したいコードを指定する場合、例えばコントローラーだけを生成するには以下のようにします。

bin/cake bake controller users

bakeコマンドで生成された一覧画面

コードが生成されたので、それぞれの画面を見ていきます。
まずは一覧画面です。

https://xxxxx.com/users
のようにURLを指定します。

CakePHPでは、/モデル名(テーブル名)という形式でURLを指定すると、対象モデルの一覧画面が表示されます。

一覧画面

テーブルの各項目が一覧形式で表示される画面が表示されました。

bakeコマンドで生成されたCRUD機能

続いてCRUD機能について、それぞれ見ていきます。

Create(生成)

まずはユーザーの登録です。

URLは以下のようにモデル名の後に「add」が追加される形式になります。
https://xxxxx.com/users/add

先ほどの一覧画面の右上に「NEW USER」というボタンがあるのでクリックすると、以下の画面が表示されます。

登録画面

テーブルの各カラムが入力項目になって表示されます。
項目によって、型に対応した入力項目になっています。

各項目を入力して、「SUBMIT」ボタンをクリックすると、登録することができます。
以下のように入力しています。

登録画面で各項目を入力

登録後は一覧画面に戻り、登録した内容が表示されています。
また、画面上部に登録が完了した旨のメッセージが表示されます。

登録完了

データベースを見てみると、データが登録されているのが確認できます。

データ登録後のテーブル

Read(読み取り)

続いて、ユーザーの確認です。

URLは以下のようにモデル名の後に「view」が追加され、その後にレコードのidが追加される形式になります。
https://xxxxx.com/users/view/1

先ほどの一覧画面で、登録したデータの右端に「View」というリンクがあるのでクリックすると、以下の画面が表示されます。

詳細画面

登録されているデータの内容を確認することができます。

Update(更新)

そして、ユーザーの更新です。

URLは以下のようにモデル名の後に「edit」が追加され、その後にレコードのidが追加される形式になります。
https://xxxxx.com/users/edit/1

先ほどの詳細画面で、左端に「Edit User」というリンクがあるのでクリックすると、以下の画面が表示されます。

変更画面

登録されている内容が編集可能な形で表示されます。
そして、以下のように変更したい内容を入力します。
本記事では「Nickname」を変更しています。

変更したい内容を入力

変更後は一覧画面に戻り、変更した内容が表示されています。
また、画面上部に変更が完了した旨のメッセージが表示されます。

変更完了後の一覧画面

データベースを見てみると、データが変更されているのが確認できます。

データ更新後のテーブル

Delete(削除)

最後に、ユーザーの削除です。

削除の場合は画面が無いので、URLはありません。

先ほどの一覧画面で、データの右端に「Delete」というリンクがあるのでクリックすると、以下の削除確認ダイアログが表示されます。

OKをクリックすると削除が行われ、削除後は一覧画面に戻り、削除した内容が表示されなくなります。
また、画面上部に削除が完了した旨のメッセージが表示されます。

削除後の一覧画面

データベースを見てみると、データが削除されているのが確認できます。

データ削除後のテーブル

bakeコマンドでコードを生成すると、CRUD機能を持った画面が簡単に作れる

bakeコマンドでコードを生成して、CRUD機能それぞれを見てみました。

コマンド1つ実行しただけで、コードは一切カスタマイズすることなく、CRUD一通りの機能を実現できるので、画面の作成が非常に簡単です。

あとはここから、表示項目やメッセージ、デザインのカスタマイズを行っていくことになります。
カスタマイズについては、また別途書きたいと思います。

bakeコマンドは非常に便利なので、ぜひ試してみてください。