<?php use Drupal\file\FileInterface; use Drupal\media\Entity\Media; /** * Creates a media image entity from a file entity. * * @param \Drupal\file\FileInterface $file * The existing file object. * @param string $alt * The image alt text. * * @return \Drupal\media\Entity\Media * The media entity. */ function MODULENAME_create_media_image_entity_from_file(FileInterface $file, $alt = NULL) { $media_entity = Media::create([ 'bundle' => 'image', 'uid' => '1', 'name' => $file->alt, 'status' => \Drupal\node\NodeInterface::PUBLISHED, 'field_media_image' => [ 'target_id' => $file->id(), 'alt' => $alt, ], ]); $media_entity->save(); return $media_entity; } /** * Fetch a media image entity id by uri. * * @param string $uri * Drupal file system uri. * * @return bool|int * The found entity id, or FALSE. */ function MODULENAME_load_media_image_by_file_uri($uri) { $ids = \Drupal::entityQuery('media') ->condition('status', 1) ->condition('field_media_image.entity.uri', $uri) ->execute(); if (!empty($ids)) { return reset($ids); } return FALSE; }