Skip to content

Latest commit

 

History

History
304 lines (231 loc) · 12.5 KB

File metadata and controls

304 lines (231 loc) · 12.5 KB
layout default
title データーベースを作成しよう

データーベースを作成しよう

本章メニュー

  • 本章では以下を行います。

    1. テーブル定義を記述するマイグレーションファイルの作成方法を説明します。

    2. 本チュートリアルで利用するテーブルの定義を説明します。

    3. エンティティマネージャーを利用し、テーブルを作成する方法を説明しています。

    4. テンプレートファイルのヘッダー・フッター表示のためにdtb_page_layoutにデータの登録が必要な事を説明しています。

    5. dtb_page_layoutに対して画面情報を登録する方法について説明しています。

本チュートリアルのテーブル定義

  • 本章メニューで示した様に、本章ではテーブル定義の内容についてのみ説明をおこいます。
  • マイグレーションファイルでエンティティマネージャーを用い、エンティティからテーブルスキーマを抽出し、テーブルを作成します。

マイグレーションファイルの準備

  1. トップページに記述されている「マイグレーションガイド」の「マイグレーション作成手順」の内容に基づき、新しいマイグレーションファイルを作成します。

    • 内容に基づき生成を行うと以下フォルダに作成されます。
    • 保存フォルダ
      • /src/Eccube/Resource/doctrine/migration
  2. 以下ファイルが出来ているか確認してください。

    • Version20160607155514.php

    • 下記に内容を記述します。

    • 「up」メソッドと「down」メソッドが記載されています。

<script src="http://gist-it.appspot.com/https://github.com/EC-CUBE/ec-cube.github.io/blob/master/Source/tutorial_6/migration_before.php"></script>

今回チュートリアルのテーブル定義

  • テーブル名 : 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
  • 上記が作成されるテーブルです。
<script src="http://gist-it.appspot.com/https://github.com/EC-CUBE/ec-cube.github.io/blob/master/Source/tutorial_6/migration_after.php"></script>
  • 上記の説明を行います。

    1. メソッドの引数に**$schema**変数が存在しますが、テーブル操作を行うためのオブジェクトです。

    2. 本内容は次章以降で説明する内容を多数含んでいますが、今回は説明のみ行います。

      • 詳細は次章以降を確認してください。
    3. 次に「Application」のインスタンスを取得しています。

      • 以前説明した通り、**「$app」**のメソッドを呼び出しアプリケーションを構築していきますが、今回も同様です。
    4. アプリケーションのインスタンスから、エンティティマネージャーを取得しています。

    5. hasTableメソッドを用いて、今回テーブルの有無を確認しています。

    6. テーブル作成対象のエンティティのパスを配列に格納しています。

      • 今回作成テーブル該当が一件のために、配列にエンティティ名を格納する必要性はありませんが、今回説明内容が、汎用的なために、あえて配列に格納しています。
    7. エンティティマネージャーのgetMetadataFactoryと、そのメソッドgetMetadataForに今回該当のエンティティのパスを指定して、エンティティから、カラム情報を取得します。

    8. SchemaToolにエンティティマネージャを引数で渡し、インスタンスを取得します。

    9. SchemaToolのメソッドcreateSchemaに取得済みのカラム情報を渡し、テーブルを生成します。

    10. 次に「down」メソッドの説明ですが、「down」メソッドはdropTableメソッドでテーブルを削除しています。

dtb_page_layoutへの画面情報の登録

  • 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
  • 上記のレコード追加を以下に記述していきます
<script src="http://gist-it.appspot.com/https://github.com/EC-CUBE/ec-cube.github.io/blob/master/Source/tutorial_6/migration_add_dtb_layout.php"></script>
  • 上記が完了したら、「マイグレーションガイド」の「マイグレーション受け入れ手順」の章を参照しその内容を実行してください。

  • 成功すれば以下の様にテーブルが作成されているはずです。


bbsテーブル


本章で学んだこと

  1. コンソールから空の「マイグレーションファイル」を作成しました。
  2. テーブル構造を検討しました。
  3. エンティティマネージャーからエンティティのカラム情報を取得する方法を説明しました。
  4. SchmeToolでカラム情報からテーブルを作成する方法を説明しました。
  5. 「マイグレーションファイル」の「schemaオブジェクト」でデーターベース操作をおこないました。
  6. 「schema」オブジェクトで「hasTable」「dropTable」のメソッドを使いテーブルの削除を行いました。
  7. dtb_page_layoutに画面情報を登録しない限り作成した画面には、ヘッダー・フッターなどが表示されない事を説明しました。
  8. dtb_page_layoutへ登録する情報の説明を行いました。
  9. dtb_page_layoutに情報の登録を行いました。