PHPackages                             axn/laravel-repository - 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. axn/laravel-repository

AbandonedArchivedLibrary

axn/laravel-repository
======================

Implementing the design pattern repositories for Laravel 5

1.2.1(9y ago)110MITPHP

Since Sep 8Pushed 9y ago2 watchersCompare

[ Source](https://github.com/AXN-Informatique/laravel-repository)[ Packagist](https://packagist.org/packages/axn/laravel-repository)[ Docs](https://github.com/AXN-Informatique/laravel-repository)[ RSS](/packages/axn-laravel-repository/feed)WikiDiscussions master Synced 2mo ago

READMEChangelog (1)Dependencies (1)Versions (8)Used By (0)

***abandoned***

Laravel Repository
==================

[](#laravel-repository)

Ce package offre des fonctionnalités de base pour le repository pattern avec Laravel 5.

Installation
------------

[](#installation)

Inclure le package avec Composer :

```
composer require axn/laravel-repository

```

Aucun service provider n'est à inclure pour utiliser ce package. Il y a juste besoin que les classes des repositories étendent la classe `Axn\Repository\Eloquent\EloquentRepository`et qu'il y ait une injection du modèle dans le constructeur :

```
namespace App\Repositories;

use Axn\Repository\Eloquent\EloquentRepository;
use App\Models\User;

class EloquentUserRepository extends EloquentRepository
{
    public function __construct(User $model)
    {
        parent::__construct($model);
    }
}
```

Utilisation
-----------

[](#utilisation)

Les méthodes de base (publiques) fournies sont les suivantes :

- **getById**($id, $columns = null)
- **getBy**(array $criteria, $columns = null)
- **getAll**($columns = null, $order = null, $limit = null, $offset = null)
- **getAllByIds**(array $ids, $columns = null, $order = null, $limit = null, $offset = null)
- **getAllBy**(array $criteria, $columns = null, $order = null, $limit = null, $offset = null)
- **getAllDistinctBy**(array $criteria, $columns = null, $order = null, $limit = null, $offset = null)
- **paginate**($perPage, array $criteria = \[\], $columns = null, $order = null)
- **exists**($id)
- **count**(array $criteria = \[\])
- **create**(array $data)
- **createMany**(array $datalist)
- **updateById**($id, array $data)
- **updateManyByIds**(array $ids, array $data)
- **updateBy**(array $criteria, array $data)
- **updateOrCreate**(array $attributes, array $data)
- **deleteById**($id)
- **deleteManyByIds**(array $ids)
- **deleteBy**(array $criteria)

### Sélection de colonnes (paramètre $columns)

[](#sélection-de-colonnes-paramètre-columns)

Le paramètre $columns permet de sélectionner les colonnes à récupérer. Il peut être fourni sous forme de tableau, ou bien sous forme de chaîne (chaque colonne séparée par une virgule). La récupération peut également se faire dans les relations. Exemple :

```
// Colonnes sous forme de tableau :
$users = $userRepository->getAll([
    'username',
    'email'
]);

// Ou bien sous forme de chaîne de caractères :
$users = $userRepository->getAll('username, email');

// Avec sélection dans les relations :
$users = $userRepository->getAll([
    'username',
    'email',
    'roles.display_name',
    'roles.permissions.display_name'
]);
```

### Critères de filtrage (paramètre $criteria)

[](#critères-de-filtrage-paramètre-criteria)

Le paramètre `$criteria` permet de filtrer les enregistrements à récupérer. Le filtrage peut également se faire sur les relations. Exemple :

```
$users = $userRepository->getAllBy(['email' => 'john.dupont@axn.fr']);

// Avec critères de filtrage sur les relations (ici seront récupérés uniquement
// les utilisateurs ayant le rôle "admin") :
$users = $userRepository->getAllBy(['roles.name' => 'admin']);
```

Des opérateurs peuvent aussi être utilisés sur les critères. La liste des opérateurs possibles est la suivante :

- EQUAL (par défaut)
- NOT\_EQUAL
- LIKE
- NOT\_LIKE
- GREATER\_THAN
- GREATER\_EQUAL
- LESS\_THAN
- LESS\_EQUAL
- IN
- NOT\_IN

Exemple :

```
$users = $userRepository->getAllBy([
    'email LIKE' => '%@axn.fr'
]);

// IS NOT NULL
$users = $userRepository->getAllBy([
    'email NOT_EQUAL' => null
]);
```

### Règles de tri (paramètre $order)

[](#règles-de-tri-paramètre-order)

Le paramètre `$order` permet de spécifier des règles de tri (ORDER BY). Ce paramètre doit être fourni exclusivement sous forme de chaîne de caractères. Comme pour le paramètre `$columns`, plusieurs règles peuvent être spécifiées en les séparant par des virgules, et il est possible de préciser la direction (asc ou desc) après le nom du champ en séparant par un espace. Exemple :

```
$users = $userRepository->getAll(null, 'date_inscription desc, lastname, firstname');
```

### Limitation et décalage (paramètres $limit et $offset)

[](#limitation-et-décalage-paramètres-limit-et-offset)

Aux méthodes `getAll*` peuvent être spécifiés les paramètres `$limit` et `$offset`qui permettent de ne sélectionner qu'un nombre limité d'enregistrements.

### Ajout de méthodes à un repository Eloquent

[](#ajout-de-méthodes-à-un-repository-eloquent)

Il est bien sûr possible d'ajouter des méthodes à un repository, si les méthodes de base ne sont pas suffisantes. Les méthodes suivantes (protégées) peuvent alors être utilisées pour construire des requêtes (repository Eloquent, uniquement) :

- **model**(array $attributes = \[\], $exists = false)
- **query**()
- **filter**($query, array $criteria, $columns = null, $order = null, $limit = null, $offset = null)

Exemples :

```
// App\Repositories\EloquentUserRepository

public function getAllWithTrashed($columns = null, $order = null, $limit = null, $offset = null)
{
    $query = $this->model()->withTrashed();

    return $this->filter($query, [], $columns, $order, $limit, $offset)->get();
}

public function getAllActive($columns = null, $order = null, $limit = null, $offset = null)
{
    $query = $this->query()->where('active', 1);

    return $this->filter($query, [], $columns, $order, $limit, $offset)->get();
}

public function getAllForDataTable(array $where = [])
{
    $query = $this->query()
        ->join('profils', 'profils.id', '=', 'users.profil_id')
        ->select([
            'users.id',
            'users.username',
            'users.email',
            'profils.name'
        ]);

    if (!empty($where['profil_id'])) {
        $query->where('profils.id', $where['profil_id']);
    }

    return $query->getQuery()->get();
}
```

###  Health Score

29

—

LowBetter than 60% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity7

Limited adoption so far

Community10

Small or concentrated contributor base

Maturity68

Established project with proven stability

 Bus Factor1

Top contributor holds 81.5% 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

Every ~70 days

Recently: every ~94 days

Total

7

Last Release

3478d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/121384f0b2f969c933a358bb40d5cf97c85558c328e9778cb9bb60f3c6302379?d=identicon)[axn](/maintainers/axn)

---

Top Contributors

[![lgtaxn](https://avatars.githubusercontent.com/u/23211553?v=4)](https://github.com/lgtaxn "lgtaxn (22 commits)")[![forxer](https://avatars.githubusercontent.com/u/407917?v=4)](https://github.com/forxer "forxer (5 commits)")

### Embed Badge

![Health badge](/badges/axn-laravel-repository/health.svg)

```
[![Health](https://phpackages.com/badges/axn-laravel-repository/health.svg)](https://phpackages.com/packages/axn-laravel-repository)
```

###  Alternatives

[larastan/larastan

Larastan - Discover bugs in your code without running it. A phpstan/phpstan extension for Laravel

6.4k43.5M5.2k](/packages/larastan-larastan)[owen-it/laravel-auditing

Audit changes of your Eloquent models in Laravel

3.4k33.0M95](/packages/owen-it-laravel-auditing)[fumeapp/modeltyper

Generate TypeScript interfaces from Laravel Models

196277.9k](/packages/fumeapp-modeltyper)[casbin/laravel-authz

An authorization library that supports access control models like ACL, RBAC, ABAC in Laravel.

324339.9k4](/packages/casbin-laravel-authz)[pressbooks/pressbooks

Pressbooks is an open source book publishing tool built on a WordPress multisite platform. Pressbooks outputs books in multiple formats, including PDF, EPUB, web, and a variety of XML flavours, using a theming/templating system, driven by CSS.

44643.1k1](/packages/pressbooks-pressbooks)[illuminatech/balance

Provides support for Balance accounting system based on debit and credit principle

16137.4k](/packages/illuminatech-balance)

PHPackages © 2026

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