PHPackages                             antoniosam/easy-doctrine - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Database &amp; ORM](/categories/database)
4. /
5. antoniosam/easy-doctrine

ActiveLibrary[Database &amp; ORM](/categories/database)

antoniosam/easy-doctrine
========================

Clase para paginar Entidades sencillas de doctrine.

v1.0(6y ago)0201MITPHP &gt;=7.2.5

Since Apr 2Pushed 6y ago1 watchersCompare

[ Source](https://github.com/antoniosam/easy-doctrine)[ Packagist](https://packagist.org/packages/antoniosam/easy-doctrine)[ RSS](/packages/antoniosam-easy-doctrine/feed)WikiDiscussions master Synced today

READMEChangelog (1)DependenciesVersions (2)Used By (1)

Easy Doctrine
=============

[](#easy-doctrine)

Clase para paginar Entidades sencillas de Doctrine

Instalacion
-----------

[](#instalacion)

```
composer require antoniosam/easy-doctrine

```

Uso
---

[](#uso)

La clase compila metodos genericos para realizar una paginacion sencilla

```
$paginar = new EasyDoctrine($em,Entity::class);
$paginar->setPage(1);
$paginar->order('name','ASC');
$paginar->execute();

$info = $paginar->getResult();

```

#### setPage

[](#setpage)

Si al mentodo **setPage** se ingresa la pagina 0, esto probocara que no se pagine la respuesta y se ejecute la consulta sin **limit** y **offset**

Respuesta
---------

[](#respuesta)

Despues de ejecutar la consulta la respuesta es una clase EasyData datos obtenidos

```
(EasyData)
    $result->totalrecords = 100;
    $result->data = DoctrineArray;
    $result->page = 1;
    $result->pages = [1,2,3];
    $result->totalpages = 3;
    $result->itemsbypage = 20;
    $result->firstrecord = 1;
    $result->lastrecord = 10;

```

Funcionamiento
--------------

[](#funcionamiento)

El metodo **where($campo,$comparacion,$valor)** internamente ejecuta una instruccion

```
->andwhere('campo comparacion :contador')->setParameter('contador',$valor);
ej.
->andwhere('a.name = :donde1')->setParameter('donde1','Sara');

```

El metodo **search($valor,$campos)** internamente ejecuta una instruccion

```
->andwhere('campo1 LIKE buscar OR campo2 LIKE buscar OR campo_n LIKE buscar')->setParameter('buscar',$valor);
ej.
->andwhere('a.name LIKE :buscar OR a.email LIKE :buscar')->setParameter('buscar','Sara'.'%');

```

El metodo **order($columna,$orden)** internamente ejecuta una instruccion

```
->orderby('columna','orden');
ej.
->orderby('a.name','ASC');

```

Ejemplo Completo
----------------

[](#ejemplo-completo)

Primero recuperamos la informacion que recibe el controlador

```
$pagina = $request->get('pagina', 1);
$columna = $request->get('columna', null);
$orden = $request->get('orden', null);
$buscar = $request->get('buscar', null);

```

Asignamos el tipo de ordenamiento

La lista de campos deben ser un arreglo que contenga **solo** las propiedades de la entidad

```
$campos = ['id','name' ,'lastname', 'email', 'gender','active', 'created_at'];
$col =  (!is_null($columna) && $columna != '')?$campos[$columna]:'id';
$ord = (!is_null($columna) && $columna != '')?$orden:'ASC';

```

Instanciamos y agregamos la condiciones necesarias

```
$em = $this->getDoctrine()->getManager();

$paginar = new EasyDoctrine($em,Entity::class);
$paginar->setPage($pagina);
$paginar->where('active','=',true);
if(!empty($buscar)){
    $paginar->search($buscar,['name','email']);
}
$paginar->order($col,$ord);
$paginar->execute();

$info = $paginar->getResult()

```

Left Join
---------

[](#left-join)

La clase permite agregar una relacion y utilizarla para ordenar o aplicar alguna condicion se debe ejecutar primero el metodo **leftJoin($campo,$indicador)** indicando el campo que tenga relacion y un indicador diferente de **a** o **b**

```
$campos = ['municipio','delegacion','direccion', 'numero', 'colonia'];
$col =  (!is_null($columna) �� $columna != '')?$campos[$columna]:'direccion';
$ord = (!is_null($columna) �� $columna != '')?$orden:'ASC';

$paginar = new EasyDoctrine($em,Casa::class);
$paginar->setPage($pagina);
if(!empty($buscar)){
    $paginar->search($buscar,['direccion','colonia']);
}
if($col == 0){
    $paginar->leftJoin('delegacion','d');
    $paginar->leftJoin('municipio','m','d');
    $paginar->ordenar('nombre','ASC,'m');
}else{
    $paginar->ordenar('campo','ASC');
}
$paginar->execute();

```

De la entidad Casa buscamos la relacion casa -&gt; delegacion

Despues bucamos la relacion delegacion -&gt; municipio

Y ordenamos

```
->leftJoin('a.delegacion', 'd')
->leftJoin('d.municipio', 'm')
->orderby('m.nombre', 'ASC')

```

###  Health Score

23

—

LowBetter than 27% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity6

Limited adoption so far

Community9

Small or concentrated contributor base

Maturity51

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Unknown

Total

1

Last Release

2228d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/35553340?v=4)[Antonio Samano](/maintainers/antoniosam)[@antoniosam](https://github.com/antoniosam)

---

Top Contributors

[![antoniosam](https://avatars.githubusercontent.com/u/35553340?v=4)](https://github.com/antoniosam "antoniosam (1 commits)")

### Embed Badge

![Health badge](/badges/antoniosam-easy-doctrine/health.svg)

```
[![Health](https://phpackages.com/badges/antoniosam-easy-doctrine/health.svg)](https://phpackages.com/packages/antoniosam-easy-doctrine)
```

###  Alternatives

[doctrine/orm

Object-Relational-Mapper for PHP

10.2k285.3M6.2k](/packages/doctrine-orm)[jdorn/sql-formatter

a PHP SQL highlighting library

3.9k115.1M102](/packages/jdorn-sql-formatter)[illuminate/database

The Illuminate Database package.

2.8k52.4M9.3k](/packages/illuminate-database)[mongodb/mongodb

MongoDB driver library

1.6k64.0M543](/packages/mongodb-mongodb)[ramsey/uuid-doctrine

Use ramsey/uuid as a Doctrine field type.

90340.3M209](/packages/ramsey-uuid-doctrine)[reliese/laravel

Reliese Components for Laravel Framework code generation.

1.7k3.4M16](/packages/reliese-laravel)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
