Skip to content

Latest commit

 

History

History
444 lines (350 loc) · 9.79 KB

File metadata and controls

444 lines (350 loc) · 9.79 KB
layout default
title Doctrineのためにエンティティファイルを作成しよう

{{ page.title }}

本章メニュー

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

    1. エンティティの説明を行います。

    2. エンティティとエンティティマネージャーについて説明しています。

    3. エンティティファイルの作成方法を説明しています。

    4. エンティティファイルをコマンドラインから自動作成出来る事を説明しています。

エンティティ

  • 前章では、データーベースとエンティティをマッピングするためのファイルEccube.Entity.[エンティティ名].dcm.ymlを作成しました。

  • 本章では、エンティティファイルを作成していきます。

エンティティの概要

  • エンティティファイルは、データーベースのカラムを、クラスのメンバ変数としてprivateスコープで作成し、それに対して、**「Setter・Getter」**を作成しただけのシンプルなファイルです。

  • アソシエーション(リレーションオブジェクト)があれば、その設定も記述します。

  • 前章での説明の通り、エンティティマネージャーエンティティを管理し、エンティティ上に、プログラム中で発生した値を保持します。

  • 開発者は、簡単な条件の情報取得であれば、マジックメソッドで情報取得、情報の保存であれば、対象エンティティに値をセットし、保存のメソッドを呼び出すだけで実現できます。

  • エンティティはプログラム中でpersistされて初めて、エンティティマネージャーの管理下におかれます。

  • プログラム中で新しくエンティティをインスタンス化した際は、必ずpersistを行い、エンティティマネージャーの管理下におきます。

ファイルの作成

  • 以下フォルダに作成します。

    • /src/Eccube/Entity
    1. フォルダの中のファイルAuthorityRole.phpをコピー・リネームします。

    2. ファイル名はCrud.phpとします。

      • Crud.php(中身はAuthorityRole.php)
<script src="http://gist-it.appspot.com/https://github.com/EC-CUBE/ec-cube.github.io/blob/master/Source/tutorial_8/crud_entity_before.php"></script>

ファイルの修正

  • エンティティファイルの場合流用出来る箇所がほとんどありません。
  • 「create_date/update_date」に関する内容以外の記述をほとんど書き換えます。
  • 以下が書き換えた内容です。
<script src="http://gist-it.appspot.com/https://github.com/EC-CUBE/ec-cube.github.io/blob/master/Source/tutorial_8/crud_entity_after.php"></script>

エンティティファイルをコマンドラインで作成

  • エンティティEccube.Entity.[エンティティ名].dcm.ymlがあれば、コマンドラインから自動生成ができます。

  • 本章ではコマンドラインを使ってCrudEntityを作成する方法も補足しておきます。

  • 手動で作成するとヒューマンエラーが起こりうるために、出来るかぎりコンソールでの自動作成をおすすめします。

  • コマンドラインでEC-CUBE 3のインストールディレクトリに移動後、以下コマンドを実行してください。

Eccube.Entity.[エンティティ名].dcm.ymlの一行目にエンティティのパスを指定しますが、この際、YAMLファイル名で指定した**[エンティティ名]エンティティパスのエンティティ名が違えばエラーとなるため、必ずファイル名、パスのエンティティ名同一名称を使用**してください。

PHPの実行パスは、環境変数に設定済みとします。


vendor/bin/doctrine orm:generate:entities --extend="Eccube\\Entity\\AbstractEntity" src --filter="Crud"

  • 参考ですが、テーブル作成もEccube.Entity.[エンティティ名].dcm.ymlがあれば同様にコマンドラインから実行できます。

  • 詳細は以下を参考にしてください。

EC-CUBE 3コードリーディング #3

本章で学んだ事

  1. Entityファイルの内部構造の概要を説明しました。
  2. Entityファイルとエンティティマネージャーの関係を説明しました。
  3. Entityファイルのコマンドラインを用いた作成方法を説明しました。
  4. コマンドラインを用いたテーブルの作成方法を説明しました。