2017 © Pedro Peláez
 

library laravel-repository

A repository pattern for Laravel.

image

um-flint/laravel-repository

A repository pattern for Laravel.

  • Monday, July 23, 2018
  • by dowilcox
  • Repository
  • 4 Watchers
  • 0 Stars
  • 543 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 0 Forks
  • 0 Open issues
  • 14 Versions
  • 21 % Grown

The README.md

Table of Contents

Methods

UMFlint\Repository\Contracts\RepositoryInterface

  • lists($column, $key = null)
  • pluck($column, $key = null)
  • sync($id, $relation, $attributes, $detaching = true)
  • syncWithoutDetaching($id, $relation, $attributes)
  • all($columns = ['*'])
  • paginate($limit = null, $columns = ['*'])
  • simplePaginate($limit = null, $columns = ['*'])
  • find($id, $columns = ['*'])
  • findByField($field, $value, $columns = ['*'])
  • findWhere(array $where, $columns = ['*'])
  • findWhereIn($field, array $values, $columns = ['*'])
  • findWhereNotIn($field, array $values, $columns = ['*'])
  • create(array $attributes)
  • update(array $attributes, $id)
  • delete($id)
  • orderBy($column, $direction = 'asc')
  • has($relation)
  • with($relations)
  • whereHas($relation, $closure)
  • withCount($relations)
  • hidden(array $fields)
  • visible(array $fields)
  • scopeQuery(\Closure $scope)
  • resetScope()

Traits

UMFlint\Traits\SoftDeletes

This trait allows for soft deletes: - delete($id, $force = false), (*1)

In order to query for deleted entities: - withTrashed(), (*2)

To restore a soft deleted entity: - restore($id), (*3)

Hooks

Boot

Anything that needs to happen when the repository class is created. Uses Laravels container for automatic injection. - boot(), (*4)

Create
  • beforeCreate(&$attributes)
  • afterCreate($model, &$attributes)
Update
  • beforeUpdate($model, &$attributes)
  • afterUpdate($model, &$attributes)
Delete
  • beforeDelete($model)
  • afterDelete($model, $deleted)
Restore
  • beforeRestore($model)
  • afterRestore($model)

Validation

Example rules:, (*5)

<?php

namespace App\Rules;

use App\Models\Announcement;
use Illuminate\Validation\Rule;
use UMFlint\Repository\Rules\BaseRules;

class AnnouncementRules extends BaseRules
{
    protected function rules(): array
    {
        return [
            'type'     => ['required', Rule::in(array_keys(Announcement::$types))],
            'title'    => 'required',
            'message'  => 'required',
            'start_at' => ['required', 'date'],
            'end_at'   => ['required', 'date'],
        ];
    }
}

To use it in a repository:, (*6)

<?php

namespace App\Repositories;

use App\Models\Announcement;
use App\Rules\AnnouncementRules;
use UMFlint\Repository\BaseRepository;

class AnnouncementRepository extends BaseRepository
{
    public function model(): string
    {
        return Announcement::class;
    }

    public function rules(): array
    {
        return AnnouncementRules::getRules();
    }
}

The Versions

23/07 2018

dev-master

9999999-dev

A repository pattern for Laravel.

  Sources   Download

MIT

The Requires

 

by Tyler Elton

23/07 2018

v3.1.1

3.1.1.0

A repository pattern for Laravel.

  Sources   Download

MIT

The Requires

 

by Tyler Elton

25/01 2018

v3.1.0

3.1.0.0

A repository pattern for Laravel.

  Sources   Download

MIT

The Requires

 

by Tyler Elton

18/01 2018

v3.0.0

3.0.0.0

A repository pattern for Laravel.

  Sources   Download

MIT

The Requires

 

by Tyler Elton

03/01 2018

v2.0.0

2.0.0.0

A repository pattern for Laravel.

  Sources   Download

MIT

The Requires

 

by Tyler Elton

09/10 2017

v1.0.1

1.0.1.0

A repository pattern for Laravel.

  Sources   Download

MIT

The Requires

 

by Tyler Elton

04/10 2017

v0.0.6

0.0.6.0

A repository pattern for Laravel.

  Sources   Download

MIT

The Requires

 

by Tyler Elton

04/10 2017

v1.0.0

1.0.0.0

A repository pattern for Laravel.

  Sources   Download

MIT

The Requires

 

by Tyler Elton

04/10 2017

v0.0.5

0.0.5.0

A repository pattern for Laravel.

  Sources   Download

MIT

The Requires

 

by Tyler Elton

04/10 2017

v0.0.4

0.0.4.0

A repository pattern for Laravel.

  Sources   Download

MIT

The Requires

 

by Tyler Elton

04/10 2017

dev-update-readme

dev-update-readme

A repository pattern for Laravel.

  Sources   Download

MIT

The Requires

 

by Tyler Elton

04/10 2017

v0.0.3

0.0.3.0

A repository pattern for Laravel.

  Sources   Download

MIT

The Requires

 

by Tyler Elton

03/10 2017

v0.0.2

0.0.2.0

A repository pattern for Laravel.

  Sources   Download

MIT

The Requires

 

by Tyler Elton

03/10 2017

v0.0.1

0.0.1.0

A repository pattern for Laravel.

  Sources   Download

MIT

The Requires

 

by Tyler Elton