Cópia do pacote Artesãos Warehouse Tag 3.0.0 ajustado para o Laravel 10
kelcampus/laravel-repository is a Laravel package for cópia do pacote artesãos warehouse tag 3.0.0 ajustado para o laravel 10.
It currently has 0 GitHub stars and 1.298 downloads on Packagist (latest version 1.10.0).
Install it with composer require kelcampus/laravel-repository.
Discover more Laravel packages by kelcampus
or browse all Laravel packages to compare alternatives.
Last updated
Cópia do pacote https://github.com/artesaos/warehouse
Ajustado para funcionar com Laravel 7, Laravel 8, Laravel 9.
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
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 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 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();
}