k3progetti/doctrine-repository

Abstract Doctrine repository with common helpers for Symfony projects

Maintainers

👁 mattiavitalik3

Package info

github.com/K3Progetti/doctrine-repository

pkg:composer/k3progetti/doctrine-repository

Statistics

Installs: 13

Dependents: 1

Suggesters: 0

Stars: 0

Open Issues: 0

1.0.1 2026-03-23 08:07 UTC

Requires

Requires (Dev)

None

Suggests

None

Provides

None

Conflicts

None

Replaces

None

MIT dbdb74e28a0ca20fe07004f8b97113f8e259a694

  • Mattia Vitali

This package is auto-updated.

Last update: 2026-06-23 08:40:07 UTC


README

Repository Doctrine astratto con helper comuni per progetti Symfony.

Requisiti

  • PHP ^8.1
  • Symfony ^6.0 | ^7.0 | ^8.0
  • Doctrine ORM ^2.0 | ^3.0

Installazione

composer require k3/doctrine-repository

Utilizzo

Estendi la classe Repository al posto di ServiceEntityRepository di Doctrine:

use K3\Repository\Repository;
use Doctrine\Persistence\ManagerRegistry;

class UserRepository extends Repository
{
 public function __construct(ManagerRegistry $registry)
 {
 parent::__construct($registry, User::class);
 }
}

Metodi disponibili

Persistenza

Metodo Descrizione
save(object $entity, bool $flush = true) Persiste un'entità e opzionalmente esegue il flush
remove(object $entity, bool $flush = true) Rimuove un'entità e opzionalmente esegue il flush
flush() Esegue il flush sull'entity manager
beginTransaction() Avvia una transazione
commit() Conferma la transazione corrente
rollback() Annulla la transazione corrente

Query

Metodo Descrizione
findOneById(int $id) Trova un'entità per ID, restituisce null se non trovata
getOneById(int $id) Trova un'entità per ID, lancia RuntimeException se non trovata
findByField(string $field, mixed $value, ?array $orderBy = null) Trova tutte le entità che corrispondono al valore di un campo
findOneByField(array $criteria, ?array $orderBy = null) Trova una singola entità che corrisponde al valore di un campo
findByCriteria(AttributeBag $parameters) Trova entità con criteri di filtro e paginazione
countByCriteria(array $filters) Conta le entità che corrispondono ai filtri dati

Helper per i criteri

Metodo Descrizione
prepareFiltersCriteria(array $filters) Racchiude un array di filtri in un AttributeBag
getPaginatedAndFilteredCriteria(AttributeBag $parameters) Costruisce un Criteria con filtri, ordinamento e paginazione
getFiltersCriteria(array $filters) Da sovrascrivere nelle sottoclassi per definire i filtri specifici dell'entità
getBooleanCriteria(Criteria $criteria, string $field, ?string $value) Aggiunge una condizione booleana ('Y'/'N') a un Criteria
getContainsFieldCriteria(Criteria $criteria, string $key, ?string $value) Aggiunge una condizione LIKE su un singolo campo
getContainsFieldsCriteria(Criteria $criteria, array $keys, ?string $value) Aggiunge una condizione LIKE su più campi (OR)
getEqualFieldCriteria(Criteria $criteria, string $key, ?string $value, ?Repository $repository) Aggiunge una condizione di uguaglianza, con risoluzione opzionale del valore tramite un altro repository

Esempio di paginazione

$bag = $this->prepareFiltersCriteria([
 'filters' => ['active' => 'Y'],
 'sortBy' => ['name' => 'ASC'],
 'limit' => 20,
 'offset' => 0,
]);

$results = $this->findByCriteria($bag);

Override di getFiltersCriteria

public function getFiltersCriteria(array $filters): Criteria
{
 $criteria = Criteria::create();
 $criteria = $this->getBooleanCriteria($criteria, 'active', $filters['active'] ?? null);
 $criteria = $this->getContainsFieldCriteria($criteria, 'name', $filters['name'] ?? null);
 return $criteria;
}

Licenza

MIT