SmsResult.php 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. <?php
  2. namespace App\Models;
  3. use Illuminate\Database\Eloquent\Model;
  4. use App\Models\DTO\SearchData;
  5. class SmsResult extends Model
  6. {
  7. protected $table = 'tb_sms_result';
  8. protected $primaryKey = 'id';
  9. public $keyType = 'int';
  10. public $incrementing = true;
  11. public $timestamps = true;
  12. const CREATED_AT = 'created_at';
  13. const UPDATED_AT = null;
  14. const DELETED_AT = null;
  15. protected $guarded = [];
  16. public function user()
  17. {
  18. return $this->belongsTo(User::class)->withDefault();
  19. }
  20. /**
  21. * 전송결과 조회
  22. */
  23. public function data(SearchData $params): object
  24. {
  25. $query = $this->query();
  26. $query->select(
  27. 'tb_sms_result.*',
  28. 'users.sid',
  29. 'users.name',
  30. 'users.nickname',
  31. 'users.email'
  32. );
  33. if ($params->keyword) {
  34. switch ($params->field) {
  35. case 'users.id':
  36. case 'users.sid':
  37. $query->where($params->field, '=', $params->keyword);
  38. break;
  39. case 'users.name':
  40. case 'users.nickname':
  41. case 'users.email':
  42. case 'tb_sms_result.subject':
  43. case 'tb_sms_result.content':
  44. case 'tb_sms_result.call_num':
  45. $query->where($params->field, 'LIKE', "%{$params->keyword}%");
  46. break;
  47. }
  48. }
  49. if($params->startDate || $params->endDate) {
  50. if($params->startDate) {
  51. $query->where('created_at', '>=', $params->startDate . ' 00:00:00');
  52. }
  53. if($params->endDate) {
  54. $query->where('created_at', '<=', $params->endDate . ' 23:59:59');
  55. }
  56. }
  57. $query->leftjoin('users', 'users.id', '=', 'tb_sms_result.user_id');
  58. $query->orderByDesc('tb_sms_result.id');
  59. $list = $query->paginate($params->perPage, ['*'], 'page', $params->page);
  60. $total = $this->count();
  61. $rows = $list->count();
  62. return (object)[
  63. 'total' => $total,
  64. 'rows' => $rows,
  65. 'list' => $list
  66. ];
  67. }
  68. }