web-dev-qa-db-ja.com

メディアエンティティ/オブジェクトをFIDからロードしますか?

ファイルID(fid)と残りのファイルオブジェクトがあります。

親メディアエンティティからフィールドを取得する必要がありますが、ファイルオブジェクトからメディアエンティティをロードする方法について何も見つかりません。

Drupal 8.4.0

更新

私は別のものに関してこの質問をしました: ファイルへのリンクとしてのメディア名

私が見つけることができる限り、ケビンのコメントは正しいです。

2
mediaashley

私は最近同じことをする必要があり、次のことを思いつきました。まず、ファイルエンティティをfidからロードします。

$fid = 1000;
$file = \Drupal\file\Entity\File::load($fid);

次に、ファイルエンティティに対して file_get_file_references を呼び出します。

$references = file_get_file_references($file);

ドキュメントごとに、参照するフィールド名、エンティティタイプ、エンティティID、最後に参照するエンティティ自体のネストされた配列が返されます。

1
Matthew Sielski

サービスの使用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.
0
FLY
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);
}
0