メインコンテンツに移動
Drupalのエンティティ(Entity)の概念と構成
エンティティ(Entity)が本体とバンドル(Bundle)から構成されます
- エンティティ(Entity)がエンティティ本体と一つ以上のバンドル(Bundle)から構成されます
- エンティティ(Entity)がオブジェクト指向のような構成となります
- Entityが抽象なクラスに似ています(構造の定義)
- バンドル(Bundle)がクラスに生成されたインスタンスに似ています
- エンティティ(Entity)の内容をプロパティ(property)で定義します
- バンドル(Bundle)の内容をフィールド(field)で定義します
- 例: ルーム(Room)エンティティ(Entity)
- 一つルーム(Room Entity)の定義に、複数のバンドル(Bundle):ホール/会議室などがあります
DB上ではエンティティ(Entity)定義テーブルとバンドル(Bundle)にあるフィールドテーブルがあります
- DBのテーブル構造からみると、エンティティ(Entity)の定義テーブルとバンドル(Bundle)のフィールドテーブルがあります
- エンティティ(Entity)のプロパティが必要に応じて任意に定義ができます
- バンドル(Bundle)の内容を定義するフィールド(Field)も必要に応じてFieldAPIに従って定義します
エンティティ(Entity)利用の価値:オブジェクト指向な構造と任意にプロパティ、フィールドの定義ができます
- ノード/ユーザー/タクソノミーなどがエンティティ(Entity)タイプです
- ノード(node)はエンティティタイプ(Entity Type)、記事(Article)、基本ページ(Basic page)がバンドル(Bundle)となります
- ユーザー(User): エンティティタイプ(Entity Type)とバンドル(Bundle)一つです
- タクソノミ(Taxonomy):エンティティタイプ(Entity Type)で、タクソノミーターム(Taxonomy term)はバンドル(Bundle)です
- エンティティ(Entity)の構造上はオブジェクト指向のような考えなので、現実のオブジェクト作成に有利となります
- エンティティ(Entity)のプロパティが任意の項目、数での定義ができます
- プロパティが一つのテーブルで纏められます(フィールドが複数のテーブルで構成され)
- 必要に応じて項目の定義ができます(柔軟性が高い)
エンティティ(Entity)利用の弱点:EntityAPIより定義、開発する必要があります
- エンティティ(Entity)の扱いモジュール(ECK:Entity Constuction Kit)がありますが、エンティティのプロパティが固定されていて、任意に定義はできません
- エンティティ(Entity)データを扱うにはカスタムモジュールを作成して、カスタマイズする手間がかかります(EntityAPIの知識を習得する時間がかかる)