ScheduleRepository.php 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. <?php
  2. /**
  3. * 预约管理
  4. * @author system
  5. * @version 1.0
  6. * @date 2018-07-18 01:53:05
  7. *
  8. */
  9. namespace App\Repositories\User;
  10. use App\Repositories\Base\Repository;
  11. use Carbon\Carbon;
  12. class ScheduleRepository extends Repository {
  13. public function model() {
  14. return \App\Models\UserScheduleModel::class;
  15. }
  16. public function searchSchedule(array $search,array $orderby=['time'=>'desc'],$pagesize=10)
  17. {
  18. $currentQuery = $this->model;
  19. if(isset($search['keyword']) && ! empty($search['keyword'])) {
  20. $keywords = '%' . $search['keyword'] . '%';
  21. $currentQuery = $currentQuery->leftJoin('store_info','store_info.id','=','user_schedule.store_id')->where(function ($query) use ($keywords) {
  22. $query->where('username' , 'like', $keywords)
  23. ->orwhere('store_info.name' , 'like', $keywords)
  24. ->orwhere('user_schedule.phone', 'like', $keywords);
  25. });
  26. }
  27. if(isset($search['expire']) && ! empty($search['expire'])) {
  28. $currentQuery = $currentQuery->where(function ($query) use ($search) {
  29. $query->where('time','<=',Carbon::now('Asia/Shanghai'));
  30. });
  31. if($orderby && is_array($orderby)){
  32. foreach ($orderby AS $field => $value){
  33. $currentQuery = $currentQuery -> orderBy($field, $value);
  34. }
  35. }
  36. }else{
  37. $currentQuery = $currentQuery->where(function ($query) use ($search) {
  38. $query->where('time','>',Carbon::now('Asia/Shanghai'));
  39. });
  40. if($orderby && is_array($orderby)){
  41. foreach ($orderby AS $field => $value){
  42. $currentQuery = $currentQuery -> orderBy($field, $value);
  43. }
  44. }
  45. }
  46. $currentQuery = $currentQuery->paginate($pagesize);
  47. return $currentQuery;
  48. }
  49. }