k3progetti/doctrine-repository

Abstract Doctrine repository with common helpers for Symfony projects

Maintainers

Package info

github.com/K3Progetti/doctrine-repository

pkg:composer/k3progetti/doctrine-repository

Statistics

Installs: 2

Dependents: 1

Suggesters: 0

Stars: 0

Open Issues: 0

1.0.1 2026-03-23 08:07 UTC

This package is auto-updated.

Last update: 2026-03-23 08:08:27 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