web-dev-qa-db-ja.com

孤立した段落ノードを削除するにはどうすればよいですか?

パラグラフノードが存在するため、不正であるように見えますが(Search APIを使用して検索していることがわかりました)、コンテンツとして表示されないため、ユーザーインターフェイスから削除できません。

どうすれば適切に削除できますか?

3
Antonio

プログラムでそれを行うことを恐れていない場合は、次のコードを使用して段落を読み込んで削除できます。

$entity = \Drupal::entityTypeManager()->getStorage('paragraph')->load($paragraph_id);
if ($entity) $entity->delete();
2
alexej_d

Drupal 8では、引き続き entity_delete_multiple() を使用できますが、非推奨としてマークされており、Drupalから削除されます9。

たとえば、次のコードを使用すると、Drushを使用してこれらのエンティティを簡単に削除できます。

drush php-eval 'entity_delete_multiple("paragraph", [$id]);'

Drupal 9で機能するコードを使用しても、これらのエンティティは単一のコマンドラインで削除します。

drush php-eval '$storage_handler = \Drupal::entityTypeManager()->getStorage($entity_type); $entities = $storage_handler->loadMultiple([$id]); $storage_handler->delete($entities);'

$idを、削除するエンティティのIDに置き換えます。 [$id]をIDの配列に置き換えて、複数のエンティティを一度に削除することもできます。

7
kiamlaluno

これは実際にはバグによって引き起こされます 削除された段落エンティティはデータベースから削除されません 。それが修正されると、この問題は悪化しなくなります(データベースの肥大化)。

クリーンな標準的な方法でこの関連性のないデータをすべて削除するには、 [META]廃止された複合エンティティを既存のストレージから削除する(ガベージコレクション) の解決策を取得する必要があります。

他の回答で提案されている回避策を考え出すのではなく、これらの問題のいずれか(または両方)のパッチで問題を完全に解決できます。

4
colan