web-dev-qa-db-ja.com

バンドルストレージごとですか?

Drupal 7では、 Per-Bundle Storage(PBS) の開始があり、フィールドデータを単一のデータベーステーブルに保存しようとしましたが、それが理にかなっており、可能であればフィールドの性質。Drupal 7モジュールのPBSは、あまり人気がなく、Drupal 8.に移植されませんでした。

必要に応じて、Drupal 8のカスタムエンティティコードを記述して単一のテーブルにデータを格納することは可能です(たとえば、Userエンティティは、users_field_dataにフィールドを格納します)。

いくつかのフィールドを単一のデータベーステーブルに格納するために見落としている簡単な解決策があるかどうか、私は興味があります。

4
greggles

ここのコメントと自分の実験に基づいて自分の質問に答えます。 Drupal 8では、ベースフィールドを持つエンティティの作成は、Drupal 7.よりも簡単です。ここで、エンティティを作成するために実行した手順は次のとおりです= Drupal 8、単一のテーブルにフィールドがあります。私の状況について話します。犬のエンティティです。

  1. Drupal 8)のエンティティとフィールドに関するDrupal.orgの優れた一般的なドキュメントがいくつかあります コンテンツエンティティフィールド定義の定義と使用 に関するこのページは特に便利です。
  2. 私も読みます Drupal 8 のエンティティに関するこのskvare記事)==これには、多くの素晴らしいアドバイスがあります。
  3. Drush をインストールすることから始めました。
  4. 私は走ったdrush generate module-content-entityと質問に答えました。私は質問に答えました:
    • フィールド化可能にするための「はい」
    • 私のケースのバンドルには「いいえ」。
    • 残りの答えは簡単に思えました。
  5. の中に exampledog/src/Entity/Dog.phpファイル追加フィールドを返すようにbaseFieldDefinitions関数を変更しました。フィールドタイプに関するいくつかの例とドキュメントは、前述の drupal.org doc page にあります。

それでおしまい。修正はこれらのフィールドでうまく機能するようです。ビューの統合は、これらのフィールドに適しています。フィールドはすべてベーステーブルに格納されます。

4
greggles