CakePHP3.xでのbakeの使い方

cakephp

私の愛しいアップルパイへ

CakePHPではデータベースの構成に合せてコントローラーやモデルの雛形を生成してくれる便利なbakeというコマンドがあります。

テーブルごとに手動でTableやEntity、Fixture(テスト用の仮想的なデータベースファイル)を作るのは面倒ですし、ミスの原因になります。是非bakeを使いましょう。

bakeはCakePHP 1.xの頃からある仕組みですが、CakePHP 3.xからは使い方が少々変わっているので、説明します。

CakePHP3.xのbake使用方法

事前準備

Modelをbakeする場合は先にデータベースにテーブルを作成しましょう。テーブルに設定された情報を読み取って各種ファイルが生成されます。

▼まだデータベースに接続できていない場合には、以下の記事を参考にしながらデータベースとの接続を行ってください。

bake実行方法

▼bakeコマンドを呼び出すには、以下のようにcakeコマンドにbakeをパラメーターとして渡します。コマンドの場所は[cakeインストールフォルダ]/binです。

cakephp/bin/cake bake

▼bakeを呼び出すと、以下のようにbakeする対象のオプションが表示されます。

cakephp/bin/cake bake

Welcome to CakePHP v3.0.12 Console
---------------------------------------------------------------
App : src
Path: /xxxxx/cakephp/src/
---------------------------------------------------------------
The following commands can be used to generate skeleton code for your application.

Available bake commands:

- all
- behavior
- cell
- component
- controller
- fixture
- form
- helper
- migration
- migration_snapshot
- model
- plugin
- shell
- template
- test

By using `cake bake [name]` you can invoke a specific bake task.

bake対象をパラメーターに追加してもう一度実行します。例えば、Modelならこうなります。

cakephp/bin/cake bake model

Welcome to CakePHP v3.0.12 Console
---------------------------------------------------------------
App : src
Path: /xxxxx/cakephp/src/
---------------------------------------------------------------
Choose a model to bake from the following:
- ChecklistItems
- Checklists
- Evaluations
- Modes
- Projects
- RoutineExcludeDates
- Routines
- Sections
- Tasks
- Users

▼さらにパラメターに上記でリスト表示された対象のModel名を追加してbakeコマンドを実行しましょう。実際にbakeの処理が走って、各種ファイルが生成されます。

cakephp/bin/cake bake model Checklists

Welcome to CakePHP v3.0.11 Console
---------------------------------------------------------------
App : src
Path: /xxxxx/cakephp/src/
---------------------------------------------------------------
One moment while associations are detected.

Baking table class for ChecklistItems...

Creating file /xxxxx/cakephp/src/Model/Table/ChecklistItemsTable.php
Wrote `/xxxxx/cakephp/src/Model/Table/ChecklistItemsTable.php`
Deleted `/xxxxx/cakephp/src/Model/Table/empty`

Baking entity class for ChecklistItem...

Creating file /xxxxx/cakephp/src/Model/Entity/ChecklistItem.php
Wrote `/xxxxx/cakephp/src/Model/Entity/ChecklistItem.php`
Deleted `/xxxxx/cakephp/src/Model/Entity/empty`

Baking test fixture for ChecklistItems...

Creating file /xxxxx/cakephp/tests/Fixture/ChecklistItemsFixture.php
Wrote `/xxxxx/cakephp/tests/Fixture/ChecklistItemsFixture.php`
Deleted `/xxxxx/cakephp/tests/Fixture/empty`
Bake is detecting possible fixtures...

Baking test case for App\Model\Table\ChecklistItemsTable ...

Creating file /xxxxx/cakephp/tests/TestCase/Model/Table/ChecklistItemsTableTest.php
Wrote `/xxxxx/cakephp/tests/TestCase/Model/Table/ChecklistItemsTableTest.php`

ちなみにModelをbakeするとTabel、Entity、Fixtureを同時に生成してくれます。

bake3.xではこのように、bakeのパスが変わったと同時に、従来は対話的に実行していたbakeコマンドがオプション指定で一気に実行されるようになっています。

貴下の従順なる下僕 松崎より

著者画像

システム系の専門学校を卒業後、システム屋として6年半の会社員生活を経て独立。ブログ「jMatsuzaki」を通して、小学生のころからの夢であった音楽家へ至るまでの全プロセスを公開することで、のっぴきならない現実を乗り越えて、諦めきれない夢に向かう生き方を伝えている。