SmsUser.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 SmsUser extends Model
  6. {
  7. protected $table = 'tb_sms_user';
  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 smsBook()
  17. {
  18. return $this->belongsTo(SmsBook::class);
  19. }
  20. /**
  21. * 주소록 회원 조회
  22. */
  23. public function data(SearchData $params): object
  24. {
  25. $query = $this->query();
  26. $query->select(
  27. 'tb_sms_user.*',
  28. 'users.sid',
  29. 'users.name',
  30. 'users.nickname',
  31. 'users.email',
  32. 'users.phone'
  33. );
  34. if ($params->keyword) {
  35. switch ($params->field) {
  36. case 'tb_sms_user.id':
  37. case 'users.id':
  38. case 'users.sid':
  39. $query->where($params->field, '=', $params->keyword);
  40. break;
  41. case 'users.name':
  42. case 'users.nickname':
  43. case 'users.email':
  44. $query->where($params->field, 'LIKE', "%{$params->keyword}%");
  45. break;
  46. }
  47. }
  48. if ($params->userGroupID) {
  49. $query->whereIn('users.user_group_id', $params->userGroupID);
  50. }
  51. if ($params->userGradeID) {
  52. $query->whereIn('users.user_grade_id', $params->userGradeID);
  53. }
  54. if ($params->smsBookID) {
  55. $query->where('tb_sms_user.sms_book_id', $params->smsBookID);
  56. }
  57. $query->join('users', 'users.id', '=', 'tb_sms_user.user_id');
  58. $query->orderByDesc('tb_sms_user.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. }