EC-CUBE3やEC-CUBE4で開発を行なっていると必ず耳にするのがドクトリンやエンティティ、レポジトリといったデータベース周りの用語です。

ECサイトはデータベースと密接に関係しているため、これらを用いずにEC-CUBEの開発を行うことは不可能です。

エンティティとレポジトリとは?

エンティティ:データを保持するためのクラス
レポジトリ:データを操作するためのクラス

あまりフレームワークに詳しくない方に対しては、テーブルをPHPのクラスとして抽象化したものと説明すると何となく伝わるように思います。

レポジトリ

Eccube\Repository\CustomerRepository

テーブル

dtb_customer

エンティティ

Eccube\Entity\Customer

レコード

ID: 1の会員データ

本来データベースのデータを操作するにはSQLを書く必要がありますが、DoctrineによってPHPのクラスとしてデータベースを扱うことができ、SQL文を自力で作る必要がなくなります。

エンティティ・レポジトリと実際のテーブルを紐づけているのが、EC-CUBE3であればdcm.ymlに書かれた定義、EC-CUBE4であればエンティティクラスに記述されたAnnotationです。

アノテーションの例:

どんどんEntityやRepositoryを使って開発を行なってみて見てください。

新規テーブルのたびにEntityやRepositoryクラスを作成するのは面倒ですが、dcm.yml等から自動生成する方法をマスターすると高速な開発が行えるようになりますので別の機会にご紹介します。

関連するカスタマイズ

Twig内で文字列の一部分を切り出す方法 Slice使用... twigテンプレート内で文字列の一部を切り出したい時があります。 そんな時はsliceフィルタを使用してtwig内だけで切り出しを実行することが可能です。 2文字目以降を切り出す(1文字目を削除) sliceフィルタの第1引数は開始位置です。 sliceフィルタにはシンタックスシ...
Composer is not installed. と表示される原因と解決方法... 新しくインストールしようとしてGitからソースを持ってきた時に画面上にComposer is not installed. だけ表示される場合がよくあります。 vendor配下のライブラリはgitignoreするのが一般的なので、git cloneしたソースに/vendor/ディレクトリが存在...
1サイトから複数のデータベースに接続する方法... 複数のEntityManagerを利用し、複数のデータベースからデータを取得したり更新する方法はないのかというご質問をよくお受けします。 既存サイトとの連携やモールショップ化では頻繁に必要となってくる技術かと思います。 なかなか説明するのは難しいのですが、Doctrineの設定上でア...
Your proxy directory “/var/www/src/Eccube/..... SSHからマイグレーションなどapp/consoleのコマンドを実行しようとした際に、ドクトリンのキャッシュファイルを書き込めないために発生するエラーです。 通常app/cache/doctrine/proxiesは所有者もグループもapacheとなるため、コマンドラインから他のユーザ...