| layout | default |
|---|---|
| title | Doctrineのためにエンティティファイルを作成しよう |
-
本章では以下を行います。
-
エンティティの説明を行います。
-
エンティティとエンティティマネージャーについて説明しています。
-
エンティティファイルの作成方法を説明しています。
-
エンティティファイルをコマンドラインから自動作成出来る事を説明しています。
-
-
前章では、データーベースとエンティティをマッピングするためのファイルEccube.Entity.[エンティティ名].dcm.ymlを作成しました。
-
本章では、エンティティファイルを作成していきます。
-
エンティティファイルは、データーベースのカラムを、クラスのメンバ変数としてprivateスコープで作成し、それに対して、**「Setter・Getter」**を作成しただけのシンプルなファイルです。
-
アソシエーション(リレーションオブジェクト)があれば、その設定も記述します。
-
前章での説明の通り、エンティティマネージャーがエンティティを管理し、エンティティ上に、プログラム中で発生した値を保持します。
-
開発者は、簡単な条件の情報取得であれば、マジックメソッドで情報取得、情報の保存であれば、対象エンティティに値をセットし、保存のメソッドを呼び出すだけで実現できます。
-
エンティティはプログラム中でpersistされて初めて、エンティティマネージャーの管理下におかれます。
-
プログラム中で新しくエンティティをインスタンス化した際は、必ずpersistを行い、エンティティマネージャーの管理下におきます。
-
以下フォルダに作成します。
- /src/Eccube/Entity
-
フォルダの中のファイルAuthorityRole.phpをコピー・リネームします。
-
ファイル名はCrud.phpとします。
- Crud.php(中身はAuthorityRole.php)
- エンティティファイルの場合流用出来る箇所がほとんどありません。
- 「create_date/update_date」に関する内容以外の記述をほとんど書き換えます。
- 以下が書き換えた内容です。
-
エンティティは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があれば同様にコマンドラインから実行できます。
-
詳細は以下を参考にしてください。
- Entityファイルの内部構造の概要を説明しました。
- Entityファイルとエンティティマネージャーの関係を説明しました。
- Entityファイルのコマンドラインを用いた作成方法を説明しました。
- コマンドラインを用いたテーブルの作成方法を説明しました。