【Dupal】エンティティにアクセスする方法
はじめに
エンティティにアクセスするには、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() は将来廃止される可能性がありますので、エンティティクエリを自分で直接実行することを強くお勧めします。
出典
https://drupal.stackexchange.com/questions/246352/entityquery-vs-entitytypemanager
この記事に関するご質問やご意見などございましたらお問い合わせフォームからお気軽にご連絡ください。