# 王者战队-简单Repositories 数据库抽象层,for Hyperf v1.1.x. 仅在私有库内使用,请先配置composer.json私有库地址,并忽略https校验. ## Installation ## composer.json 配置 在composer.json内追加以下配置,告诉composer.json我们需要走私有库 ```json "repositories": [ { "type": "composer", "url": "http://composer.ipx.mx" } ], "config": { "preferred-install": "dist", "disable-tls": true, "secure-http": false } ``` ## 安装 ```bash composer require "kz2/repositories" -vvv ``` ## 试用方式 第一步, 创建你的仓库类文件. 这个类文件必须继承 ```KZ2\Repositories\Model\Repository``` 同时 实现 ``` model() ``` 方法 ```php user = $user; } public function index() { return json_success($this->user->all()); } } ``` ## 可用的方法 ##### KZ2\Repositories\Contracts\RepositoryInterface ```php public function all($columns = array('*')) public function lists($value, $key = null) public function paginate($perPage = 1, $columns = array('*'), $page = 1, $pageName = 'page'); public function create(array $data) // if you use mongodb then you'll need to specify primary key $attribute public function update(array $data, $id, $attribute = "id") public function delete($id) public function find($id, $columns = array('*')) public function findBy($field, $value, $columns = array('*')) public function findAllBy($field, $value, $columns = array('*')) public function findWhere($where, $columns = array('*')) ``` ##### KZ2\Repositories\Contracts\CriteriaInterface ```php public function apply($model, Repository $repository) ``` ### 用例样本 创建一个数据. ```php $this->film->create(Input::all()); ``` 更新已经存在的数据. ```php $this->film->update(Input::all(), $film_id); ``` 根据主键删除数据. ```php $this->film->delete($id); ``` 根据主键查找数据. ```php $this->film->find($id); ``` 你也可以选择某些字段返回 ```php $this->film->find($id, ['title', 'description', 'release_date']); ``` 获取单个字段下的一行数据 ```php $this->film->findBy('title', $title); ``` 或者你可以获取单个字段的所有数据行. ```php $this->film->findAllBy('author_id', $author_id); ``` 获取指定字段多行数据. ```php $this->film->findWhere([ 'author_id' => $author_id, ['year','>',$year] ]); ``` ## Criteria Criteria 是一个具体链式应用实际条件或者查询. 你的criteria必须实现```KZ2\Repositories\Criteria\Criteria```抽象类. 使用标准的样本 ```php where('length', '>', 120); return $model; } } ``` ```php film = $film; } public function index() { $this->film->pushCriteria(new LengthOverTwoHours()); return \Response::json($this->film->all()); } } ```