src/Prettus/Repository/Contracts/RepositoryInterface.php
<?php
namespace Prettus\Repository\Contracts;
/**
* Interface RepositoryInterface
*
* @package Prettus\Repository\Contracts
*/
interface RepositoryInterface
{
/**
* Retrieve data array for populate field select
*
* @param string $column
* @param string|null $key
*
* @return \Illuminate\Support\Collection|array
* @deprecated since version laravel 5.2. Use the "pluck" method directly.
*/
public function lists($column, $key = null);
/**
* Retrieve data array for populate field select
*
* @param string $column
* @param string|null $key
*
* @return \Illuminate\Support\Collection|array
*/
public function pluck($column, $key = null);
/**
* Retrieve all data of repository
*
* @param array $columns
*
* @return mixed
*/
public function all($columns = ['*']);
/**
* Retrieve first data of repository
*
* @param array $columns
*
* @return mixed
*/
public function first($columns = ['*']);
/**
* Retrieve first data of repository or throw a ModelNotFoundException
*
* @param array $columns
*
* @return mixed
*/
public function firstOrFail($columns = ['*']);
/**
* Retrieve all data of repository, paginated
*
* @param null $limit
* @param array $columns
*
* @return mixed
*/
public function paginate($limit = null, $columns = ['*']);
/**
* Retrieve all data of repository, simple paginated
*
* @param null $limit
* @param array $columns
*
* @return mixed
*/
public function simplePaginate($limit = null, $columns = ['*']);
/**
* Find data by id
*
* @param $id
* @param array $columns
*
* @return mixed
*/
public function find($id, $columns = ['*']);
/**
* Find data by field and value
*
* @param $field
* @param $value
* @param array $columns
*
* @return mixed
*/
public function findByField($field, $value, $columns = ['*']);
/**
* Find data by multiple fields
*
* @param array $where
* @param array $columns
*
* @return mixed
*/
public function findWhere(array $where, $columns = ['*']);
/**
* Find data by multiple values in one field
*
* @param $field
* @param array $values
* @param array $columns
*
* @return mixed
*/
public function findWhereIn($field, array $values, $columns = ['*']);
/**
* Find data by excluding multiple values in one field
*
* @param $field
* @param array $values
* @param array $columns
*
* @return mixed
*/
public function findWhereNotIn($field, array $values, $columns = ['*']);
/**
* Find data by field between values
*
* @param $field
* @param array $values
* @param array $columns
*
* @return mixed
*/
public function findWhereBetween($field, array $values, $columns = ['*']);
/**
* Save a new entity in repository
*
* @param array $attributes
*
* @return mixed
*/
public function create(array $attributes);
/**
* Update a entity in repository by id
*
* @param array $attributes
* @param $id
*
* @return mixed
*/
public function update(array $attributes, $id);
/**
* Update or Create an entity in repository
*
* @throws ValidatorException
*
* @param array $attributes
* @param array $values
*
* @return mixed
*/
public function updateOrCreate(array $attributes, array $values = []);
/**
* Delete a entity in repository by id
*
* @param $id
*
* @return int
*/
public function delete($id);
/**
* Delete multiple entities by given criteria.
*
* @param array $where
*
* @return int
*/
public function deleteWhere(array $where);
/**
* Order collection by a given column
*
* @param string $column
* @param string $direction
*
* @return $this
*/
public function orderBy($column, $direction = 'asc');
/**
* Load relations
*
* @param $relations
*
* @return $this
*/
public function with($relations);
/**
* Add subselect queries to count the relations.
*
* @param mixed $relations
* @return $this
*/
public function withCount($relations);
/**
* Set hidden fields
*
* @param array $fields
*
* @return $this
*/
public function hidden(array $fields);
/**
* Set visible fields
*
* @param array $fields
*
* @return $this
*/
public function visible(array $fields);
/**
* Query Scope
*
* @param \Closure $scope
*
* @return $this
*/
public function scopeQuery(\Closure $scope);
/**
* Reset Query Scope
*
* @return $this
*/
public function resetScope();
/**
* Get Searchable Fields
*
* @return array
*/
public function getFieldsSearchable();
/**
* Set Presenter
*
* @param $presenter
*
* @return mixed
*/
public function setPresenter($presenter);
/**
* Skip Presenter Wrapper
*
* @param bool $status
*
* @return $this
*/
public function skipPresenter($status = true);
}