今回は非常に要望が多かった新しいテーブルを作ってエンティティとしてデータ取得をできるようにする方法をご紹介します。
この方法は3系のもので、まもなくリリースされるEC-CUBE4系では利用できませんのでご注意ください。

  1. データベースの作成
  2. ドクトリン定義ファイルの作成(dcm.ymlファイル)
  3. エンティティクラスファイルの作成
  4. レポジトリクラスの作成
  5. データの追加と取得

1. データベースの作成

マイグレーションでもphpMyAdminでもschema updateでも構わないので、とにかくテーブルを作成します。

 

2. ドクトリン定義ファイルの作成(dcm.ymlファイル)

データベースからエンティティに同期するカラムの情報を記載します。

3. エンティティクラスファイルの作成

src/Eccube/Entity/Test.phpを作成します。

dcm.ymlで定義したカラムをprivateなプロパティとして設定し、それぞれゲッターセッターを用意します。

 

4. レポジトリクラスファイルの作成

src/Eccube/Repository/TestRepository.phpを作成します。

最初は空っぽで構いませんが、システムの開発に応じてエンティティの取得・更新を行うメソッドを追加していきます。

 

これでデータベースとエンティティの紐付けは完了です。Testエンティティを使用してdtb_testテーブルへデータを登録したり、$app[‘orm.em’]->getRepository(‘Eccube\Entity\Test’)->find(1)といったようにデータの取得が可能になります。

5. データの追加と取得

マイグレーション等で1つデータを追加してみましょう。dtb_testにID1の行が追加されます。マイグレーションが作成できない場合phpMyAdminから追加すれば同じことです。

TopController::indexメソッドあたりに次のコードを書いてみてください。トップページの画面にデータが表示されていれば成功です。

dump($app[‘orm.em’]->getRepository(‘Eccube\Entity\Test’)->findOneBy(array()));