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']]]
Supporting organizations:
made on company time
Project information
- Module categories: Developer Tools
- 165 sites report using this module
- Created by PeterLemmens on , updated
- Stable releases for this project are covered by the security advisory policy.
Look for the shield icon below.