定制 k3progetti/doctrine-repository 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

k3progetti/doctrine-repository

最新稳定版本:1.0.1

Composer 安装命令:

composer require k3progetti/doctrine-repository

包简介

Abstract Doctrine repository with common helpers for Symfony projects

README 文档

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

统计信息

  • 总下载量: 8
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 5
  • 依赖项目数: 1
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 0
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2026-03-23

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固