| layout | default |
|---|---|
| title | データーベースを作成しよう |
-
本章では以下を行います。
-
テーブル定義を記述するマイグレーションファイルの作成方法を説明します。
-
本チュートリアルで利用するテーブルの定義を説明します。
-
エンティティマネージャーを利用し、テーブルを作成する方法を説明しています。
-
テンプレートファイルのヘッダー・フッター表示のためにdtb_page_layoutにデータの登録が必要な事を説明しています。
-
dtb_page_layoutに対して画面情報を登録する方法について説明しています。
-
- 本章メニューで示した様に、本章ではテーブル定義の内容についてのみ説明をおこいます。
- マイグレーションファイルでエンティティマネージャーを用い、エンティティからテーブルスキーマを抽出し、テーブルを作成します。
-
トップページに記述されている「マイグレーションガイド」の「マイグレーション作成手順」の内容に基づき、新しいマイグレーションファイルを作成します。
- 内容に基づき生成を行うと以下フォルダに作成されます。
- 保存フォルダ
- /src/Eccube/Resource/doctrine/migration
-
以下ファイルが出来ているか確認してください。
-
Version20160607155514.php
-
下記に内容を記述します。
-
「up」メソッドと「down」メソッドが記載されています。
-
- テーブル名 : dtb_crud
| 論理名 | 物理名 | フィールドタイプ | その他 |
|---|---|---|---|
| 投稿ID | id | int | NOT NULL PRIMARY AUTO_INCREMENT |
| 投稿種別 | reason | smallint | NOT NULL |
| 投稿者ハンドルネーム | name | varchar(255) | NOT NULL |
| 投稿のタイトル | title | varchar(255) | NOT NULL |
| 投稿種別 | notes | text | DEFAULT NULL |
| 投稿登録時間 | created_date | datetime | NOT NULL |
| 投稿編集時間 | updated_date | datetime | NOT NULL |
- 上記が作成されるテーブルです。
-
上記の説明を行います。
-
メソッドの引数に**$schema**変数が存在しますが、テーブル操作を行うためのオブジェクトです。
-
本内容は次章以降で説明する内容を多数含んでいますが、今回は説明のみ行います。
- 詳細は次章以降を確認してください。
-
次に「Application」のインスタンスを取得しています。
- 以前説明した通り、**「$app」**のメソッドを呼び出しアプリケーションを構築していきますが、今回も同様です。
-
アプリケーションのインスタンスから、エンティティマネージャーを取得しています。
-
hasTableメソッドを用いて、今回テーブルの有無を確認しています。
-
テーブル作成対象のエンティティのパスを配列に格納しています。
- 今回作成テーブル該当が一件のために、配列にエンティティ名を格納する必要性はありませんが、今回説明内容が、汎用的なために、あえて配列に格納しています。
-
エンティティマネージャーのgetMetadataFactoryと、そのメソッドgetMetadataForに今回該当のエンティティのパスを指定して、エンティティから、カラム情報を取得します。
-
SchemaToolにエンティティマネージャを引数で渡し、インスタンスを取得します。
-
SchemaToolのメソッドcreateSchemaに取得済みのカラム情報を渡し、テーブルを生成します。
-
次に「down」メソッドの説明ですが、「down」メソッドはdropTableメソッドでテーブルを削除しています。
-
-
EC-CUBE 3のテンプレートのヘッダー・フッターは、dtb_page_layoutに画面情報が登録されていないと表示されません。
-
以下にdtb_page_layoutに保存する情報を記載します。
-
テーブル名 : dtb_page_layout
| 物理名 | 登録情報 | 登録値 |
|---|---|---|
| device_type_id | 表示デバイスのタイプ | mtb_device_typeのキー10(PC)を取得し格納 |
| page_name | 画面のタイトル | チュートリアル/CRUD |
| url | 画面のルーティング名称 | tutorial_crud |
| file_name | 該当Twigのルートからのパスと名称 | Tutorial/crud_top |
| edit_flg | 管理画面から編集可能かどうか | 2 |
- 上記のレコード追加を以下に記述していきます
-
上記が完了したら、「マイグレーションガイド」の「マイグレーション受け入れ手順」の章を参照しその内容を実行してください。
-
成功すれば以下の様にテーブルが作成されているはずです。
- コンソールから空の「マイグレーションファイル」を作成しました。
- テーブル構造を検討しました。
- エンティティマネージャーからエンティティのカラム情報を取得する方法を説明しました。
- SchmeToolでカラム情報からテーブルを作成する方法を説明しました。
- 「マイグレーションファイル」の「schemaオブジェクト」でデーターベース操作をおこないました。
- 「schema」オブジェクトで「hasTable」「dropTable」のメソッドを使いテーブルの削除を行いました。
- dtb_page_layoutに画面情報を登録しない限り作成した画面には、ヘッダー・フッターなどが表示されない事を説明しました。
- dtb_page_layoutへ登録する情報の説明を行いました。
- dtb_page_layoutに情報の登録を行いました。
