ファイルID(fid)と残りのファイルオブジェクトがあります。
親メディアエンティティからフィールドを取得する必要がありますが、ファイルオブジェクトからメディアエンティティをロードする方法について何も見つかりません。
Drupal 8.4.0
更新
私は別のものに関してこの質問をしました: ファイルへのリンクとしてのメディア名
私が見つけることができる限り、ケビンのコメントは正しいです。
私は最近同じことをする必要があり、次のことを思いつきました。まず、ファイルエンティティをfidからロードします。
$fid = 1000;
$file = \Drupal\file\Entity\File::load($fid);
次に、ファイルエンティティに対して file_get_file_references を呼び出します。
$references = file_get_file_references($file);
ドキュメントごとに、参照するフィールド名、エンティティタイプ、エンティティID、最後に参照するエンティティ自体のネストされた配列が返されます。
サービスの使用file.uses
ファイルメディアオブジェクトを取得します。
例:
$file is a loaded file object.
$file = \Drupal::entityTypeManager()->getStorage('file')->load($fid)
$result = \Drupal::service('file.usage')->listUsage($file);
$result
には次のような配列が含まれているはずです。
$result['file']['media']['4372'] = 2;
どこ 4372
はメディアIDです。および2
ファイルが使用された回数。
listUsage
のドキュメントから:
@return array
* A nested array with usage data. The first level is keyed by module name,
* the second by object type and the third by the object id. The value of
* the third level contains the usage count.
use Drupal\media\Entity\Media;
use Drupal\node\Entity\Node;
function myFunction() {
$node_load = Node::load($nids);
$media_field = $node_load->get('media_field_machine_name')->getString();
$media_entity_load = Media::load($media_field);
$uri = $media_entity_load->field_media_video_file->entity->getFileUri();
$banner_media_url = file_create_url($uri);
}