kelcampus/laravel-repository

Cópia do pacote Artesãos Warehouse Tag 3.0.0 ajustado para o Laravel 10
1,298
Install
composer require kelcampus/laravel-repository
Latest Version:1.10.0
PHP:^8.1
License:MIT
Last Updated:Jul 10, 2023
Links: GitHub  ·  Packagist
Maintainer: kelcampus

laravel-repository

Cópia do pacote https://github.com/artesaos/warehouse

Ajustado para funcionar com Laravel 7, Laravel 8, Laravel 9.

Como usar

Retirado de https://github.com/artesaos/warehouse

Warehouse v2 é um pacote base, ele implementa o básico sem nenhuma regra de negócio definida. Há duas classes base: BaseRepository e AbstractCrudRepository

BaseRepository

Esta classe implementa o contrato BaseRepository, que possui três assinaturas:

 /**
  * Returns all records.
  * If $take is false then brings all records
  * If $paginate is true returns Paginator instance.
  *
  * @param int  $take
  * @param bool $paginate
  *
  * @return EloquentCollection|Paginator
  */
  public function getAll($take = 15, $paginate = true);
/**
 * Retrieves a record by his id
 * If $fail is true fires ModelNotFoundException. When no record is found.
 *
 * @param int     $id
 * @param bool $fail
 *
 * @return Model
 */
 public function findByID($id, $fail = true);
/**
 * @param string $column
 * @param string|null $key
 *
 * @return \Illuminate\Support\Collection|array
 */
public function lists($column, $key = null);

Já na implementação, BaseRepository disponibiliza dois métodos protegidos newQuery() e doQuery($query = null, $take = 15, $paginate = true). Eles são amplamente usados nos repositórios.

newQuery

newQuery retorna um objeto QueryBuilder do eloquent, à partir da propriedade modelClass.

protected function newQuery()
{
    return app()->make($this->modelClass)->newQuery();
}

Essa propriedade precisa ser definida em todos as classes repositório

doQuery

doQuery processa a query e retorna uma collection ou um objeto paginate, dependendo dos parametros passados

protected function doQuery($query = null, $take = 15, $paginate = true)
{
    if (is_null($query)) {
        $query = $this->newQuery();
    }

    if (true == $paginate):
        return $query->paginate($take);
    endif;

    if ($take > 0 || false != $take) {
        $query->take($take);
    }

    return $query->get();
}

Related Packages

zerospam/laravel-cacheable-repository

Laravel 5 - Repositories to the database layer

3,183
acacha/l5-repository

Laravel 5 - Repositories to the database layer. Based on prettus/l5-repository

1,278 1
prettus/l5-repository

Laravel 8|9|10|11|12|13 - Repositories to the database layer

11,942,836 4,195
m2quared/eloquent-depot

Repositories to the database layer

20,083 1