PHP code example of mawuekom / laravel-data-repository
1. Go to this page and download the library: Download mawuekom/laravel-data-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/ */
mawuekom / laravel-data-repository example snippets
return [
/*
* By default the package will use the ` *
* You can customize these query string parameters here.
*/
'parameters' => [
'ded using the relationship name suffixed with this string.
* For example: GET /users?se,
/*
* By default the package inspects query string of request using $request->query().
* You can change this behavior to inspect the request body using $request->input()
* by setting this value to `body`.
*
* Possible values: `query_string`, `body`
*/
'request_data_source' => 'query_string',
];
return [
/*
* The maximum number of results that will be returned
* when using the JSON API paginator.
*/
'max_results' => 30,
/*
* The default number of results that will be returned
* when using the JSON API paginator.
*/
'default_size' => 30,
/*
* The key of the page[x] query string parameter for page number.
*/
'number_parameter' => 'number',
/*
* The key of the page[x] query string parameter for page size.
*/
'size_parameter' => 'size',
/*
* The name of the macro that is added to the Eloquent query builder.
*/
'method_name' => 'jsonPaginate',
/*
* If you only need to display Next and Previous links, you may use
* simple pagination to perform a more efficient query.
*/
'use_simple_pagination' => false,
/*
* Here you can override the base url to be used in the link items.
*/
'base_url' => null,
/*
* The name of the query parameter used for pagination
*/
'pagination_parameter' => 'page',
];
namespace App\Repositories;
use Mawuekom\DataRepository\Repositories\BaseRepository;
class UserRepository extends BaseRepository
{
public function model()
{
return Model::class;
}
/**
* Determine the columns on which the search will be done
*/
public function searchFields(): array
{
return [];
}
}
namespace Mawuekom\DataRepository\Repositories\Contracts;
interface BaseRepositoryContract
{
/**
* Get all model's data
*
* @param array $columns
*
* @return mixed
*/
public function all($columns = ['*']);
/**
* Retrieve the list of data and can add some adjustments to it
* Like model's relations...
*
* @param string $orderByColumn
* @param string $orderBy
* @param array $with
* @param array $columns
*
* @return mixed
*/
public function list($orderByColumn, $orderBy = 'desc', $with = [], $columns = ['*']);
/**
* Create new data
*
* @param array $data
*
* @return mixed
*/
public function create(array $data);
/**
* Update data by one attribute
*
* @param string $attribute
* @param string|int $id
* @param array $data
*
* @return mixed
*/
public function update(string $attribute, $id, array $data);
/**
* Update data by some params
*
* @param array $params
* @param array $data
*
* @return mixed
*/
public function updateBy(array $params, array $data);
/**
* Delete data by ID
*
* @param int $id
*
* @return mixed
*/
public function delete($id);
/**
* Delete data by some params
*
* @param array $params
*
* @return mixed
*/
public function deleteBy(array $params);
/**
* Search data
*
* @param string|int $searchTerm
*
* @return mixed
*/
public function search($searchTerm);
/**
* Find data by ID
*
* @param int $id
* @param array $columns
*
* @return mixed
*/
public function find($id, $columns = ['*']);
/**
* Find data by some params
*
* @param array $params
* @param array $columns
*
* @return mixed
*/
public function findBy(array $params, $columns = ['*']);
/**
* Find all data by some params
*
* @param array $params
* @param array $columns
*
* @return mixed
*/
public function findAllBy(array $params, $columns = ['*']);
/**
* Get data paginated
*
* @param int $perPages
*
* @return mixed
*/
public function paginate($perPages = 15);
}
namespace App\Repositories;
use Mawuekom\DataRepository\Repositories\BaseApiRepository;
class UserRepository extends BaseApiRepository
{
public function model()
{
return Model::class;
}
/**
* Determine the columns on which the search will be done
*/
public function searchFields(): array
{
return [];
}
/**
* Columns on which filterig will be done
*/
public function filters(): array
{
return ['name', 'first_name', 'sex'];
}
/**
* Determine by which property the results collection will be ordered
*/
public function sorts(): array
{
return [];
}
/**
* Determine the relation that will be load on the resulting model collection
*/
public function collectionRelation(): array
{
return [];
}
/**
* Determine the relation that will be load on the resulting model resource
*/
public function resourceRelation(): array
{
return [];
}
/**
* Define a couple fields that will be fetch to reduce the overall size of your SQL query
*/
public function fields(): array
{
return [];
}
}
namespace Mawuekom\DataRepository\Repositories\Contracts;
interface BaseApiRepositoryContract
{
/**
* Get all resources
*
* @return mixed
*/
public function getAllResources();
/**
* Get all resources paginated
*
* @return mixed
*/
public function paginateAllResources();
/**
* Get all resources by
*
* @param array $params
*
* @return mixed
*/
public function getAllResourcesBy(array $params);
/**
* Paginate all resources get by
*
* @param array $params
*
* @return mixed
*/
public function paginateAllResourcesBy(array $params);
/**
* Get resource
*
* @param string $attribute
* @param string|int $id
*
* @return mixed
*/
public function getResource(string $attribute, $id);
/**
* Get resource by
*
* @param array $params
*
* @return mixed
*/
public function getResourceBy(array $params);
/**
* Search resource
*
* @param string $searchTerm
*
* @return mixed
*/
public function searchResources($searchTerm);
/**
* Paginate searched resources
*
* @param string $searchTerm
*
* @return mixed
*/
public function paginateSearchResources($searchTerm);
}