abstract class EntityQueryResourceBase in JSON:API Resources 8
Defines basic functionality for an entity query-oriented JSON:API Resource.
Hierarchy
- class \Drupal\jsonapi_resources\Resource\ResourceBase- class \Drupal\jsonapi_resources\Resource\EntityResourceBase implements ResourceObjectToEntityMapperAwareInterface uses EntityCreationTrait- class \Drupal\jsonapi_resources\Resource\EntityQueryResourceBase
 
 
- class \Drupal\jsonapi_resources\Resource\EntityResourceBase implements ResourceObjectToEntityMapperAwareInterface uses EntityCreationTrait
Expanded class hierarchy of EntityQueryResourceBase
5 files declare their use of EntityQueryResourceBase
- AddComment.php in tests/modules/ jsonapi_resources_test/ src/ Resource/ AddComment.php 
- AddReminder.php in tests/modules/ jsonapi_resources_test/ src/ Resource/ AddReminder.php 
- AuthorArticles.php in tests/modules/ jsonapi_resources_test/ src/ Resource/ AuthorArticles.php 
- FeaturedNodes.php in tests/modules/ jsonapi_resources_test/ src/ Resource/ FeaturedNodes.php 
- JsonapiResourceClassResolver.php in src/Unstable/ DependencyInjection/ JsonapiResourceClassResolver.php 
File
- src/Resource/ EntityQueryResourceBase.php, line 17 
Namespace
Drupal\jsonapi_resources\ResourceView source
abstract class EntityQueryResourceBase extends EntityResourceBase {
  /**
   * The entity query executor utility.
   *
   * @var \Drupal\jsonapi_resources\Unstable\Entity\Query\CacheabilityCapturingExecutor
   */
  private $entityQueryExecutor;
  /**
   * Sets the cacheability capturing entity query executor.
   *
   * @param \Drupal\jsonapi_resources\Unstable\Entity\Query\CacheabilityCapturingExecutor $entity_query_executor
   *   The entity query executor utility.
   */
  public function setCacheabilityCapturingExecutor(CacheabilityCapturingExecutor $entity_query_executor) {
    $this->entityQueryExecutor = $entity_query_executor;
  }
  /**
   * Gets an entity query for the given entity type.
   *
   * @param string $entity_type_id
   *   The entity type ID for the entity query.
   *
   * @return \Drupal\Core\Entity\Query\QueryInterface
   *   An entity query.
   *
   * @throws \Drupal\Component\Plugin\Exception\InvalidPluginDefinitionException
   * @throws \Drupal\Component\Plugin\Exception\PluginNotFoundException
   */
  protected function getEntityQuery($entity_type_id) {
    return $this->entityTypeManager
      ->getStorage($entity_type_id)
      ->getQuery();
  }
  /**
   * Gets an entity query paginator for the current request.
   *
   * Currently, this will always returns an OffsetLimitPaginator, but it's
   * possible that it may return other paginator types in the future. Such as a
   * cursor-based paginator.
   *
   * @param \Symfony\Component\HttpFoundation\Request $request
   *   The request object.
   *
   * @return \Drupal\jsonapi_resources\Entity\Query\PaginatorInterface
   *   A paginator for the request.
   */
  protected function getPaginatorForRequest(Request $request) : PaginatorInterface {
    return OffsetLimitPaginator::create($request, $this->entityQueryExecutor);
  }
  /**
   * Finds entity resource object using an entity query.
   *
   * @param \Drupal\Core\Entity\Query\QueryInterface $entity_query
   *   The entity query object.
   * @param \Drupal\Core\Cache\CacheableMetadata $cacheable_metadata
   *   A CacheableMetadata object that will be used to capture any cacheability
   *   information generated while generating pagination links. The same object
   *   that is passed to this method should be added to the cacheability of the
   *   final response by the caller.
   * @param bool $load_latest_revisions
   *   (optional) Whether to load the latest revisions instead of the defaults.
   *   Defaults to FALSE.
   * @param bool $check_access
   *   (optional) Whether to check access on the loaded entities or not.
   *   Defaults to TRUE.
   *
   * @return \Drupal\jsonapi\JsonApiResource\ResourceObjectData
   *   The resource object data that was found and access checked.
   *
   * @throws \Drupal\Component\Plugin\Exception\PluginNotFoundException
   *   Thrown if the entity type doesn't exist.
   * @throws \Drupal\Component\Plugin\Exception\InvalidPluginDefinitionException
   *   Thrown if the storage handler couldn't be loaded.
   */
  protected function loadResourceObjectDataFromEntityQuery(QueryInterface $entity_query, CacheableMetadata $cacheable_metadata, $load_latest_revisions = FALSE, $check_access = TRUE) : ResourceObjectData {
    $entity_type_id = $entity_query
      ->getEntityTypeId();
    $results = $this->entityQueryExecutor
      ->executeQueryAndCaptureCacheability($entity_query, $cacheable_metadata);
    return $this
      ->loadResourceObjectsByEntityIds($entity_type_id, $results, $load_latest_revisions, $check_access);
  }
  /**
   * Loads and access checks entities loaded by ID as JSON:API resource objects.
   *
   * @param string $entity_type_id
   *   The entity type ID of the entities to load.
   * @param int[] $ids
   *   An array of entity IDs, keyed by revision ID if the entity type is
   *   revisionable.
   * @param bool $load_latest_revisions
   *   (optional) Whether to load the latest revisions instead of the defaults.
   *   Defaults to FALSE.
   * @param bool $check_access
   *   (optional) Whether to check access on the loaded entities or not.
   *   Defaults to TRUE.
   *
   * @return \Drupal\jsonapi\JsonApiResource\ResourceObjectData
   *   A ResourceObjectData object containing a resource object with unlimited
   *   cardinality. This corresponds to a top-level document's primary
   *   data on a collection response.
   *
   * @throws \Drupal\Component\Plugin\Exception\PluginNotFoundException
   *   Thrown if the entity type doesn't exist.
   * @throws \Drupal\Component\Plugin\Exception\InvalidPluginDefinitionException
   *   Thrown if the storage handler couldn't be loaded.
   */
  private function loadResourceObjectsByEntityIds($entity_type_id, array $ids, $load_latest_revisions = FALSE, $check_access = TRUE) : ResourceObjectData {
    $storage = $this->entityTypeManager
      ->getStorage($entity_type_id);
    if ($load_latest_revisions) {
      assert($storage instanceof RevisionableStorageInterface);
      $entities = $storage
        ->loadMultipleRevisions(array_keys($ids));
    }
    else {
      $entities = $storage
        ->loadMultiple($ids);
    }
    return $this
      ->createCollectionDataFromEntities($entities, $check_access);
  }
}Members
| Name   | Modifiers | Type | Description | Overrides | 
|---|---|---|---|---|
| EntityCreationTrait:: | protected | function | Modifies the created entity before it is saved. | 2 | 
| EntityCreationTrait:: | protected | function | Process the resource request. | |
| EntityQueryResourceBase:: | private | property | The entity query executor utility. | |
| EntityQueryResourceBase:: | protected | function | Gets an entity query for the given entity type. | |
| EntityQueryResourceBase:: | protected | function | Gets an entity query paginator for the current request. | |
| EntityQueryResourceBase:: | protected | function | Finds entity resource object using an entity query. | |
| EntityQueryResourceBase:: | private | function | Loads and access checks entities loaded by ID as JSON:API resource objects. | |
| EntityQueryResourceBase:: | public | function | Sets the cacheability capturing entity query executor. | |
| EntityResourceBase:: | private | property | The JSON:API entity access checker. | |
| EntityResourceBase:: | protected | property | The entity type manager. | |
| EntityResourceBase:: | protected | function | Creates a JSON:API resource object from the given entity. | |
| EntityResourceBase:: | protected | function | Creates a JSON:API resource object from the given entity. | |
| EntityResourceBase:: | protected | function | Get all resource types that represent variants of the given entity type ID. | |
| EntityResourceBase:: | public | function | Sets the entity access checker. | |
| EntityResourceBase:: | public | function | Sets the entity type manager. | |
| EntityValidationTrait:: | protected static | function | Verifies that an entity does not violate any validation constraints. | |
| ResourceBase:: | private | property | The document extractor. | |
| ResourceBase:: | private | property | The resource response factory. | |
| ResourceBase:: | protected | property | The resource type repository. | |
| ResourceBase:: | protected | function | Builds a response with the appropriate wrapped document. | |
| ResourceBase:: | protected | function | Get the document from the request. | |
| ResourceBase:: | public | function | 2 | |
| ResourceBase:: | public | function | Sets the document extractor. | |
| ResourceBase:: | public | function | Sets the resource response factory. | |
| ResourceBase:: | public | function | Sets the resource type repository. | |
| ResourceObjectToEntityMapperAwareTrait:: | private | property | The service which created an entity from a resource object. | |
| ResourceObjectToEntityMapperAwareTrait:: | public | function | 
