src/Prettus/Repository/Contracts/RepositoryInterface.php
<?php
namespace Prettus\Repository\Contracts;
/**
* Interface RepositoryInterface
* @package Prettus\Repository\Contracts
* @author Anderson Andrade <contato@andersonandra.de>
*/
interface RepositoryInterface
{
/**
* Retrieve data array for populate field select
*
* @param string $column
* @param string|null $key
*
* @return \Illuminate\Support\Collection|array
*/
public function lists($column, $key = null);
/**
* Retrieve data array for populate field select
* Compatible with Laravel 5.3
* @param string $column
* @param string|null $key
*
* @return \Illuminate\Support\Collection|array
*/
public function pluck($column, $key = null);
/**
* Sync relations
*
* @param $id
* @param $relation
* @param $attributes
* @param bool $detaching
* @return mixed
*/
public function sync($id, $relation, $attributes, $detaching = true);
/**
* SyncWithoutDetaching
*
* @param $id
* @param $relation
* @param $attributes
* @return mixed
*/
public function syncWithoutDetaching($id, $relation, $attributes);
/**
* Retrieve all data of repository
*
* @param array $columns
*
* @return mixed
*/
public function all($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 between values in one field
*
* @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);
/**
* 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);
/**
* Load relation with closure
*
* @param string $relation
* @param closure $closure
*
* @return $this
*/
public function whereHas($relation, $closure);
/**
* 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);
/**
* Retrieve first data of repository, or return new Entity
*
* @param array $attributes
*
* @return mixed
*/
public function firstOrNew(array $attributes = []);
/**
* Retrieve first data of repository, or create new Entity
*
* @param array $attributes
*
* @return mixed
*/
public function firstOrCreate(array $attributes = []);
/**
* Trigger static method calls to the model
*
* @param $method
* @param $arguments
*
* @return mixed
*/
public static function __callStatic($method, $arguments);
/**
* Trigger method calls to the model
*
* @param string $method
* @param array $arguments
*
* @return mixed
*/
public function __call($method, $arguments);
}