| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 |
- <?php
- namespace App\Module\Friend\Repositories;
- use App\Module\Friend\Models\FriendRequest;
- use Illuminate\Pagination\LengthAwarePaginator;
- use UCore\DcatAdmin\Repository\EloquentRepository;
- /**
- * 好友申请仓库
- *
- * 提供好友申请数据的访问和操作功能。
- * 该类是好友申请模块与后台管理系统的桥梁,用于处理好友申请数据的CRUD操作。
- */
- class FriendRequestRepository extends EloquentRepository
- {
- /**
- * 模型类名
- *
- * @var string
- */
- protected $eloquentClass = FriendRequest::class;
- /**
- * 获取好友申请列表
- *
- * @param array $where 查询条件
- * @param int $page 页码
- * @param int $limit 每页数量
- * @return LengthAwarePaginator
- */
- public function getList(array $where, int $page = 1, int $limit = 20): LengthAwarePaginator
- {
- $query = FriendRequest::query();
- // 应用查询条件
- foreach ($where as $key => $value) {
- if ($key === '_sort_field' || $key === '_sort_order') {
- continue;
- }
- if (is_array($value) && count($value) === 3) {
- $query->where($key, $value[0], $value[1]);
- } else {
- $query->where($key, $value);
- }
- }
- // 应用排序
- if (isset($where['_sort_field']) && isset($where['_sort_order'])) {
- $query->orderBy($where['_sort_field'], $where['_sort_order']);
- } else {
- // 默认按ID降序排列
- $query->orderBy('id', 'desc');
- }
- return $query->paginate($limit, ['*'], 'page', $page);
- }
- /**
- * 根据条件查询单条记录
- *
- * @param array $where 查询条件
- * @return FriendRequest|null
- */
- public function findByWhere(array $where): ?FriendRequest
- {
- $query = FriendRequest::query();
- foreach ($where as $key => $value) {
- if (is_array($value) && count($value) === 3) {
- $query->where($key, $value[0], $value[1]);
- } else {
- $query->where($key, $value);
- }
- }
- return $query->first();
- }
- /**
- * 根据条件统计记录数
- *
- * @param array $where 查询条件
- * @return int
- */
- public function countByWhere(array $where): int
- {
- $query = FriendRequest::query();
- foreach ($where as $key => $value) {
- if (is_array($value) && count($value) === 3) {
- $query->where($key, $value[0], $value[1]);
- } else {
- $query->where($key, $value);
- }
- }
- return $query->count();
- }
- }
|