23 Aug.2019

Drupal 10: Remove all medias entities from the site programmatically

drupal entities

Sometimes we need to completely remove media entities, for example, when you copy a site for another project.

You can use custom code in your custom module or install devel_php and run with admin interface on /devel/php.

Below are two examples.

For small and middle websites.

$ids = \Drupal::entityQuery('media')->execute();
$storageHandler = \Drupal::entityTypeManager()->getStorage('media');
$entities = $storageHandler->loadMultiple($ids);
$storageHandler->delete($entities);

For large websites, when you have, for example, 20k+ entities.

$ids = \Drupal::entityQuery('media')->execute();
$storageHandler = \Drupal::entityTypeManager()->getStorage('media');
$entities = $storageHandler->loadMultiple($ids);
foreach ($entities as $entity) {
  $entity->delete();
}

Works in case if you want to load all media by bundle/type and delete after.

$ids = \Drupal::entityQuery('media')->condition('bundle', 'remote_video')->execute();
$storageHandler = \Drupal::entityTypeManager()->getStorage('media');
$entities = $storageHandler->loadMultiple($ids);
foreach ($entities as $entity) {
  $entity->delete();
}

Ruslan Piskarov

Ukraine
PHP/WEB Developer / Drupal Expert. More than 11 years of experience delivering Drupal based General Purpose solutions for different sectors such as Job Boards, Product Portfolios, Geo Coding, Real Estate solutions, E-Commerce, Classifieds, Corporate and online Magazines/Newspapers.