私の愛しいアップルパイへ
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コマンドがオプション指定で一気に実行されるようになっています。
貴下の従順なる下僕 松崎より