すべてにバンドルが必要ですか?


11

Entity APIについて学習しています。たとえば、ビューで使用できるように「drupalize」したい単純な追加のテーブルがあります。

私はかなりの数を読み、いくつかのビデオを見て、かなりの数の例を見ました。バンドルのコンセプトにこだわっています。バンドルとは何か理解しています(たとえば、ノードタイプはノードエンティティのバンドルです)。

しかし、私の使用では、バンドルは1つしかありません。例では、バンドルがデータベーステーブルに格納されていることを確認しました。すべてのレコードに対して同じ値が格納されるため、これは私には必要ありません。だから私はどういうわけかこれをスキップしたり、エンティティにバンドルの標準文字列を常に返させたりできると考えていました。

誤解しましたか?バンドルは常に実装する必要があり、データベーステーブルレベルで実装する必要がありますか?

回答:


9

はい、エンティティには常にバンドルが必要です。

独自のバンドルを定義しない場合、エンティティシステムはエンティティタイプと同じ名前のデフォルトのバンドルを割り当て、そのバンドルが使用されます。

バンドルが1つしかなく、バンドルを1つだけ持つ予定がある場合は、エンティティテーブルに特定のフィールドを含める必要はありません。あなたの質問で示唆しているように、それは常に同じであるため、冗長であり、dbクエリに余分なオーバーヘッド(ごくわずかですが)を追加するだけです。

ただし、ある時点でエンティティの異なるサブタイプを区別する必要があると思われる場合は、最初から構築することをお勧めします。それは本当にあなたのユースケースに依存します。


エンティティがバンドルを持つ必要がある場合、バンドル自体がエンティティになることができるのはなぜですか(?!)
artfulrobot

1
CRUD機能を一般的なエンティティタイプに抽象化し、システム全体で再利用して、すべてのオブジェクト(エンティティ、バンドル、フィールドなど)が独自のエンティティを実装する必要なく利用できるようにするという考えについて話しているだけだと思います。Drupalエンティティー(ノード、ユーザーなど)に関しては、バンドルはまったく異なるものです。バンドルが実際にDrupalエンティティである場合、それ自体がバンドルを持つ可能性がありますが、これは意味がありません:)
Clive
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.