1. Go to this page and download the library: Download foothing/laravel-repository library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
foothing / laravel-repository example snippets
// Make a repository instance manually
$repository = new EloquentRepository(new Post());
// Find first occurrence with matching field 'email'
$repository->findOneBy('email', '[email protected]');
// Find first occurrence where id > 1
$repository->findOneBy('id', '1', '>');
// Find where title starts with 'foo'
$repository->findAllBy('title', 'foo%', 'like');
// Find all occurrences where id > 1
$repository->findAllBy('id', '1', '>');
// Returns all posts
$repository->all();
// Returns all post with Laravel pagination format
$repository->paginate();
// Return record count
$repository->filter('name', 'Homer')->count();
// Create, update and delete instances.
$model = new Post(Input::all());
$freshMoel = $repository->create($model);
$updatedModel = $repository->update($model);
$repository->delete($model);
class PostsRepository extends EloquentRepository {
function __construct(Post $post) {
// Call superclass constructor.
parent::construct($post);
}
function customFancyMethod() {
}
}
class PostsRepository extends AbstractEloquentRepository {
function __construct(Post $post, AnotherDependency $dependency) {
parent::construct($post);
// Do whatever you like with your $dependency
}
}
// Use with a dependency injector
class PostsController {
protected $posts;
function __construct(PostsRepository $posts) {
$this->posts = $posts;
}
function getIndex($id = null) {
// Return one post by primary key
return $this->posts->find($id);
}
}
$posts = $repository->with(['author', 'comments'])->findOneBy('name', 'foo');
$posts = $repository->with(['author', 'comments'])->all();
// And so on.
class User extends Model implements Foothing\Resources\Resource {
/**
* Array of relations we want to eager-load when
* a single entity is being fetched.
*
* @return array
*/
function unitRelations() {
return ['roles', 'posts'];
}
/**
* Array of relations we want to eager-load when
* a list of entities is being fetched.
*
* @return array
*/
function listRelations() {
return ['roles'];
}
/**
* When the resource is sent in a json-encoded
* format it may happen to have relations fields
* populated. Since they would be set as stdClass
* objects we need to unset them before save.
*
* This method should return an array with all relations
* we want to be unset when processing the updates.
*
* @return array
*/
function skipOnSave() {
return ['roles', 'posts'];
}
}
$users->find($id); // will eager load *roles* and *posts*
$users->findOneBy($id); // will eager load *roles* and *posts*
$users->create(); // will eager load *roles* and *posts*
$users->update(); // will eager load *roles* and *posts*
$users->all(); // will eager load *roles*
$users->paginate(); // will eager load *roles*
// Model
class Person extends Model {
public function scopeMale($query) {
return $query->where('sex', 'male');
}
}
// Usage in Repository
$malePeople = $repository->scope('male')->all();
$malePeople = $repository->scope('male')->filter('name', 'Bart')->all();
$malePeople = $repository->scope('male')->paginate();
$malePeople = $repository->scope('male')->findAllBy('name', 'John');
protected $globalScope = 'whatever';
namespace Foothing\Repository;
interface RepositoryInterface {
//
//
// Crud.
//
//
public function find($id);
public function findOneBy($field, $arg1, $arg2 = null);
public function findAllBy($field, $arg1, $arg2 = null);
public function all();
public function paginate($limit = null, $offset = null);
public function count();
public function create($entity);
public function update($entity);
public function delete($entity);
//
//
// Eager loading.
//
//
public function with(array $relations);
//
//
// Relations.
//
//
/**
* Attach $relatedEntity and $entity in a many-to-many relation.
*
* @param Model $entity
* @param string $relation
* @param Model $relatedEntity
*
* @return Model the updated $entity
*/
public function attach($entity, $relation, $relatedEntity);
/**
* Detach $entity and $relatedEntity in a many-to-many relation.
*
* @param Model $entity
* @param string $relation
* @param Model $relatedEntity
*
* @return Model the updated $entity
*/
public function detach($entity, $relation, $relatedEntity);
//
//
// Criteria shortcuts.
//
//
public function criteria(CriteriaInterface $criteria);
public function filter($field, $value, $operator = '=');
public function order($field, $sort = null);
public function sort($direction);
//
//
// Scopes.
//
//
public function scope($scope);
//
//
// Helpers.
//
//
/**
* Forces the next read query to skip cached values.
* @return self
*/
public function refresh();
/**
* Reset the refresh flag.
* @return self
*/
public function reset();
}
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.