Tôi muốn xóa tất cả các điều khoản khỏi một vocab nhưng không xóa chính vocab đó.
Tôi có thể làm điều đó trên cơ sở dữ liệu, nhưng Id thay vì sử dụng api nếu có trong D8.
$existingTerms = \Drupal::entityTypeManager()->getStorage('taxonomy_term')->loadTree('mycustomvocab');
foreach ($existingTerms as $existingTerm) {
// Delete vocabulary term *** This function is not available in D8 ***
taxonomy_term_delete($existingTerm->tid);
// Delete vocabulary - *** Not what is required ***
/*
$vocab = Vocabulary::load($existingTerm->vid);
if (!is_null($vocab)) {
$vocab->delete();
}
*/
}
Đây là cách tôi làm điều đó vào lúc này cho đến khi tôi tìm thấy một giải pháp tốt hơn
db_query("DELETE FROM {taxonomy_term_hierarchy} WHERE `tid` IN (SELECT tid FROM {taxonomy_term_data} WHERE `vid` = :ctype)", array(':ctype' => 'mycustomvocab'));
db_query("DELETE FROM {taxonomy_term_field_data} WHERE `vid` = :ctype", array(':ctype' => 'mycustomvocab'));
db_query("DELETE FROM {taxonomy_term_data} WHERE `vid` = :ctype", array(':ctype' => 'mycustomvocab'));