entity_delete_multiple
を使用して、特定の語彙の分類用語をすべて削除したい。ノードの場合は正常に動作しています
$result = \Drupal::entityQuery('node')
->condition('type', 'page')
->execute();
entity_delete_multiple('node', $result);
Taxonomy_termを変更してtags or any other vocabulary
と入力するか、type by bundle
を置き換えた場合
$result = \Drupal::entityQuery('taxonomy_term')
->condition('type', 'tags')
->execute();
entity_delete_multiple('taxonomy_term', $result);
このようなエラーが発生しています。
Drupal\Core\Entity\Query\QueryException: 'type' not found in Drupal\Core\Entity\Query\Sql\Tables-> ensureEntityTable()(304/core/lib/Drupal/Core/Entity/Query/Sql/Tables.php)。
また、ユーザー、ウォッチドッグ、およびプロファイルを削除するには、同じクエリが必要です。
それを行う方法はありますか?
vid
の代わりにtype
を使用してください。私はコードを試していませんが、以下を試します
$result = \Drupal::entityQuery('taxonomy_term')
->condition('vid', 'tags')
->execute();
entity_delete_multiple('taxonomy_term', $result);
ここ は、entityQueryを使用する良い例です。
ユーザーを削除するには、entity_delete_multiple
またはuser_delete_multiple
を使用できます
Uid 10のユーザーを削除するには
entity_delete_multiple('user', \Drupal::entityQuery('user')->condition('uid', '10', '=')->execute());
またはuidの配列をuser_delete_multiple
に渡します
user_delete_multiple(array $uids);
コメントを削除する方法を知りません。
分類にはvid
を使用します:
$result = \Drupal::entityQuery('taxonomy_term')
->condition('vid', 'tags')
->execute();
これは分類法のバンドルです。
特定の語彙の分類用語をすべて削除します。
試す
$vid = 'name_of_the_vocabulary';
$tids = \Drupal::entityQuery('taxonomy_term')
->condition('vid', $vid)
->execute();
entity_delete_multiple('taxonomy_term', $tids);
私は質問がentity_delete_multipleについて具体的に尋ねるのを知っていますが、関数は廃止され、「前に」削除される予定ですDrupal 9。
/**
* Delete all taxonomy terms from a vocabulary
* @param $vid
*/
function delete_terms_from_vocab($vid) {
$tids = Drupal::entityQuery('taxonomy_term')
->condition('vid', $vid)
->execute();
if (empty($tids)) {
return;
}
$storage_handler = \Drupal::entityManager()
->getStorage('taxonomy_term');
$entities = $storage_handler->loadMultiple($tids);
$storage_handler->delete($entities);
}
あなたは私のために働く以下のコードを試すことができます
$vids = Vocabulary::loadMultiple();
foreach ($vids as $vid) {
if ($vid->label() == 'YourVocab') {
$container = \Drupal::getContainer();
$terms = $container->get('entity.manager')->getStorage('taxonomy_term')->loadTree($vid->id());
if (!empty($terms)) {
entity_delete_multiple('taxonomy_term', $terms);
}
break;
}
}