Skip to main content
drupalreleases

Use direct release data with your AI assistant.

Learn more

Entity repository

Security covered Under active development 215 sites

Part of the Entity ecosystem · 308 projects

This module provides a system to create custom repositories for entities, allowing for simplified querying and data retrieval. You can extend base repository classes to define specific queries for your content types or other entities.

Provides a basic API for queries. This module won't do much by itself.
Extend the base classes and create your own repository classes.

Usage

e.g. when creating a repository for the news content type.

Create a service

news.repository.news:
  class: Drupal\news\Repository\NewsRepository
  parent: entity_repository.repository.node

Create a repository class

The property $bundles limits the results to the given bundles. The base
NodeRepository class contains a lot of queries by default like findAll().


namespace Drupal\news\Repository;

use Drupal\entity_repository\Repository\NodeRepository;

/**
 * Class NewsRepository.
 *
 * @package Drupal\news\Repository
 */
class NewsRepository extends NodeRepository {

  protected $bundles = ['news'];

  /**
   * {@inheritdoc}
   */
  public function findByTags(array $tags = [], int $pager = NULL, $sort = NULL) : array {
    $query = $this->getBaseQuery();

    if (!empty($tags)) {
      $query->condition('field_news_tags', $tags, 'IN');
    }

    if ($pager) {
      $query->pager($pager);
    }

    if ($sort) {
      $query->sort($sort['field'], $sort['dir'], $this->getLangCode());
    }

    return $this->getResults($query);
  }

}

<h3>Use the repository class</h3>
<?php
$nodes = \Drupal::service('news.repository.news')->findAll();

Create a repository without a custom class

When you don't need custom queries, you can create a repository without without creating an empty repository class.
You can add a new service and call the setBundles or setVocabularies for taxonomy terms on the base class.

news.repository.news:
  class: Drupal\entity_repository\Repository\NodeRepository
  arguments:
    - '@database'
    - '@entity_type.manager'
    - '@language_manager'
  calls:
    - [setBundles, [['news']]]
Drupal 8–11

Ask your assistant about Entity repository

Check compatibility with your Drupal and PHP version, maintenance and security coverage, from current release data. How it works

Depends on

Dependencies of the latest stable release

No dependencies recorded for this project.

Required by

Tracked projects that depend on this one

No tracked projects depend on this one yet.

Activity

Tracked releases
2
Tracked since
Sep 2024
Latest release
11 months ago
Releases (12 mo)
1 ▲ from 0
Maintenance
Active

Releases

Version Type Core PHP Release date
2.0.5 Stable 8–11 Oct 21, 2025
2.0.4 Stable 8–11 Sep 12, 2024