【Dupal】エンティティにアクセスする方法

こちらのサイトではDRUPAL10に関連する記事を掲載しています。

エンティティにアクセスするには、entityTypeManagerを使用する方法とentityQueryを使用する方法があります。entityTypeManagerが一般的によく使用されています。

しかし、より高度なSQL条件を使用したい場合は、entityQueryを使用することになります。loadByProperties は = 演算子を使用するため、より高度な条件が必要な場合は、entityQueryでクエリを直接使用する必要があります。

entityTypeManagerを使用する例

  //entityTypeManagerを使う方法    
  $nodes = \Drupal::entityTypeManager()
      ->getStorage('node')
      ->loadByProperties(['type' => 'scraping_api_master']);

    $nids=array();
    foreach ($nodes as $tid => $node) {
      $nids[] = $node->id();
    }

entityQueryを使用する例


    //entityQueryを使う方法
    $query = \Drupal::entityQuery('node')
      ->condition('type', 'scraping_api_master')
      ->accessCheck(FALSE)
      ->execute();
    $nids = array_values($query);

また、QUERYの結果を以下のようにLOADMULTIPLEメソッドに入れることで、クエリー結果をすべてLOADすることができます。

$nodes = \Drupal::entityTypeManager()->getStorage('node')->loadMultiple($query);

loadByProperties() は将来廃止される可能性がありますので、エンティティクエリを自分で直接実行することを強くお勧めします。

出典

entityQuery vs. entityTypeManager
I have a custom content type user_in_club and I'd like to load a single specific node matching two field values. There are 2 ways (I know of) which can solve th...
このサイトに関するご意見・ご質問はこちらまで

この記事またはDrupalに関するご質問がございましたら、お気軽にお問い合わせください。

タイトルとURLをコピーしました