エンティティフィールドのストレージ情報がkey_valueテーブルに登録されていない場合、それは問題ですか?


7

これはDrupal 8(ベータ15)サイトであり、基本的なコンテンツタイプはほとんどありません。ステータスレポートページには次のように書かれています。

Entity/field definitions
    Mismatch detected
    Mismatched entity and/or field definitions.

調査の結果、いくつかのフィールドが原因であることが判明しました。Drupal\Core\Entity\EntityDefinitionUpdateManager::getChangeList()元のストレージ定義から欠落しているため、それらを報告しているkey_value列のコレクションのためのテーブル:entity.storage_schema.sql

(column-collection = config.entity.key_store.field_configエントリはすべてのフィールドに存在します。)

私の質問は-これをどのように修正できますか?すべての構成は、すべてのフィールドのymlファイルを含む構成ファイル(ステージングディレクトリ)に保存されます。構成マネージャーは違いを報告せず、エクスポートはファイルを同じに保ち、インポートは何も変更しません。drush updbも更新を報告しません。

このストレージ情報を同期/登録するために更新フックで呼び出す必要があるコマンドはありますか?何か案が?


getChangeList()の結果は何ですか。たとえば、どのフィールドやステータスは何ですか。
benjy 2015年

回答:


3

getChangedList()から正確に報告される内容に依存しますが、モジュールがエンティティスキーマを次のようなもので更新する必要があることが発生しています。

\Drupal::entityDefinitionUpdateManager()
->installFieldStorageDefinition('the_field_name', 'node', 'node', $field_storage_definition);

あなたが知る必要があるすべては変更記録にあります:https : //www.drupal.org/node/2554097

ステータスページで追加情報を提供する取り組みも進行中です:https : //www.drupal.org/node/2554911


1
素晴らしい、ありがとう。あなたは完全なスニペットにしたい場合には、これは私が定義を得た方法です$fieldStorages = \Drupal::entityManager()->getFieldStorageDefinitions($entityTypeID);\Drupal::entityDefinitionUpdateManager() ->installFieldStorageDefinition($fieldName, 'node', 'node', $fieldStorages[$fieldName]);
itarato
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.