| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189 |
- <?php
- namespace App\Module\Team\Repositorys;
- use Illuminate\Database\Eloquent\Model;
- use Illuminate\Support\Facades\DB;
- /**
- * 基础仓库类
- *
- * 提供基本的数据访问和操作功能,所有具体的仓库类都继承自此类。
- * 该类主要用于后台管理控制器,提供数据的CRUD操作。
- */
- class BaseRepository
- {
- /**
- * 模型实例
- *
- * @var Model
- */
- protected $model;
- /**
- * 构造函数
- *
- * @param Model $model
- */
- public function __construct(Model $model)
- {
- $this->model = $model;
- }
- /**
- * 获取所有记录
- *
- * @param array $columns 要获取的字段
- * @return \Illuminate\Database\Eloquent\Collection
- */
- public function all(array $columns = ['*'])
- {
- return $this->model->all($columns);
- }
- /**
- * 分页获取记录
- *
- * @param int $perPage 每页数量
- * @param array $columns 要获取的字段
- * @return \Illuminate\Contracts\Pagination\LengthAwarePaginator
- */
- public function paginate(int $perPage = 15, array $columns = ['*'])
- {
- return $this->model->paginate($perPage, $columns);
- }
- /**
- * 根据ID获取记录
- *
- * @param int $id 记录ID
- * @param array $columns 要获取的字段
- * @return Model|null
- */
- public function find(int $id, array $columns = ['*'])
- {
- return $this->model->find($id, $columns);
- }
- /**
- * 根据条件获取第一条记录
- *
- * @param array $conditions 查询条件
- * @param array $columns 要获取的字段
- * @return Model|null
- */
- public function findBy(array $conditions, array $columns = ['*'])
- {
- $query = $this->model->query();
-
- foreach ($conditions as $field => $value) {
- $query->where($field, $value);
- }
-
- return $query->first($columns);
- }
- /**
- * 根据条件获取多条记录
- *
- * @param array $conditions 查询条件
- * @param array $columns 要获取的字段
- * @return \Illuminate\Database\Eloquent\Collection
- */
- public function findAllBy(array $conditions, array $columns = ['*'])
- {
- $query = $this->model->query();
-
- foreach ($conditions as $field => $value) {
- $query->where($field, $value);
- }
-
- return $query->get($columns);
- }
- /**
- * 创建记录
- *
- * @param array $data 记录数据
- * @return Model
- */
- public function create(array $data)
- {
- return $this->model->create($data);
- }
- /**
- * 更新记录
- *
- * @param int $id 记录ID
- * @param array $data 记录数据
- * @return bool
- */
- public function update(int $id, array $data)
- {
- $record = $this->find($id);
-
- if (!$record) {
- return false;
- }
-
- return $record->update($data);
- }
- /**
- * 删除记录
- *
- * @param int $id 记录ID
- * @return bool
- */
- public function delete(int $id)
- {
- $record = $this->find($id);
-
- if (!$record) {
- return false;
- }
-
- return $record->delete();
- }
- /**
- * 批量删除记录
- *
- * @param array $ids 记录ID数组
- * @return int 删除的记录数
- */
- public function deleteMultiple(array $ids)
- {
- return $this->model->whereIn('id', $ids)->delete();
- }
- /**
- * 获取记录总数
- *
- * @param array $conditions 查询条件
- * @return int
- */
- public function count(array $conditions = [])
- {
- $query = $this->model->query();
-
- foreach ($conditions as $field => $value) {
- $query->where($field, $value);
- }
-
- return $query->count();
- }
- /**
- * 执行原生SQL查询
- *
- * @param string $query SQL查询语句
- * @param array $bindings 绑定参数
- * @return array
- */
- public function rawQuery(string $query, array $bindings = [])
- {
- return DB::select($query, $bindings);
- }
- }
|