CakePHPのbakeコマンドは、コードを自動で生成することができて、大変便利です。
コマンドを実行するだけで、CRUD機能を一通り持ったコードが出来上がるので、手順を紹介します。
本記事では2020年10月現在の最新版であるCakePHP4.1.5を使用しています。
bakeコマンドでは、テーブルを元にコードを生成する
bakeコマンドでは、実際のテーブルを元にコードを生成します。
今回はユーザーを管理する「users」テーブルを利用します。
テーブルのカラムは以下のようになっています。
![](https://specially198.com/wp-content/uploads/2020/10/users-1024x218.png)
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
例えばモデルだけを生成するには以下のようにします。
bin/cake bake model users
bakeコマンドで生成された一覧画面
コードが生成されたので、それぞれの画面を見ていきます。
まずは一覧画面です。
https://xxxxx.com/users
のようにURLを指定します。
CakePHPでは、/モデル名(テーブル名)という形式でURLを指定すると、対象モデルの一覧画面が表示されます。
![一覧画面](https://specially198.com/wp-content/uploads/2020/10/list-screen-e1603853726435-1024x240.png)
テーブルの各項目が一覧形式で表示される画面が表示されました。
bakeコマンドで生成されたCRUD機能
続いてCRUD機能について、それぞれ見ていきます。
Create(生成)
まずはユーザーの登録です。
URLは以下のようにモデル名の後に「add」が追加される形式になります。
https://xxxxx.com/users/add
先ほどの一覧画面の右上に「NEW USER」というボタンがあるのでクリックすると、以下の画面が表示されます。
![登録画面](https://specially198.com/wp-content/uploads/2020/10/registration-screen-1024x740.png)
テーブルの各カラムが入力項目になって表示されます。
項目によって、型に対応した入力項目になっています。
各項目を入力して、「SUBMIT」ボタンをクリックすると、登録することができます。
以下のように入力しています。
![登録画面で各項目を入力](https://specially198.com/wp-content/uploads/2020/10/registration-screen-input-1024x744.png)
登録後は一覧画面に戻り、登録した内容が表示されています。
また、画面上部に登録が完了した旨のメッセージが表示されます。
![登録完了](https://specially198.com/wp-content/uploads/2020/10/list-screen-added-1024x419.png)
データベースを見てみると、データが登録されているのが確認できます。
![データ登録後のテーブル](https://specially198.com/wp-content/uploads/2020/10/user-added-1024x696.png)
Read(読み取り)
続いて、ユーザーの確認です。
URLは以下のようにモデル名の後に「view」が追加され、その後にレコードのidが追加される形式になります。
https://xxxxx.com/users/view/1
先ほどの一覧画面で、登録したデータの右端に「View」というリンクがあるのでクリックすると、以下の画面が表示されます。
![詳細画面](https://specially198.com/wp-content/uploads/2020/10/details-screen-1024x663.png)
登録されているデータの内容を確認することができます。
Update(更新)
そして、ユーザーの更新です。
URLは以下のようにモデル名の後に「edit」が追加され、その後にレコードのidが追加される形式になります。
https://xxxxx.com/users/edit/1
先ほどの詳細画面で、左端に「Edit User」というリンクがあるのでクリックすると、以下の画面が表示されます。
![変更画面](https://specially198.com/wp-content/uploads/2020/10/change-screen-1024x746.png)
登録されている内容が編集可能な形で表示されます。
そして、以下のように変更したい内容を入力します。
本記事では「Nickname」を変更しています。
![変更したい内容を入力](https://specially198.com/wp-content/uploads/2020/10/change-screen-input-1-1024x754.png)
変更後は一覧画面に戻り、変更した内容が表示されています。
また、画面上部に変更が完了した旨のメッセージが表示されます。
![変更完了後の一覧画面](https://specially198.com/wp-content/uploads/2020/10/list-screen-changed-1024x415.png)
データベースを見てみると、データが変更されているのが確認できます。
![データ更新後のテーブル](https://specially198.com/wp-content/uploads/2020/10/user-changed-1024x693.png)
Delete(削除)
最後に、ユーザーの削除です。
削除の場合は画面が無いので、URLはありません。
先ほどの一覧画面で、データの右端に「Delete」というリンクがあるのでクリックすると、以下の削除確認ダイアログが表示されます。
![](https://specially198.com/wp-content/uploads/2020/10/delete-confirmation-dialog.png)
OKをクリックすると削除が行われ、削除後は一覧画面に戻り、削除した内容が表示されなくなります。
また、画面上部に削除が完了した旨のメッセージが表示されます。
![削除後の一覧画面](https://specially198.com/wp-content/uploads/2020/10/list-screen-deleted-1024x338.png)
データベースを見てみると、データが削除されているのが確認できます。
![データ削除後のテーブル](https://specially198.com/wp-content/uploads/2020/10/user-deleted-1024x692.png)
bakeコマンドでコードを生成すると、CRUD機能を持った画面が簡単に作れる
bakeコマンドでコードを生成して、CRUD機能それぞれを見てみました。
コマンド1つ実行しただけで、コードは一切カスタマイズすることなく、CRUD一通りの機能を実現できるので、画面の作成が非常に簡単です。
あとはここから、表示項目やメッセージ、デザインのカスタマイズを行っていくことになります。
カスタマイズについては、また別途書きたいと思います。
bakeコマンドは非常に便利なので、ぜひ試してみてください。