belongsTo(User::class)->withDefault(); } /** * 문서 목록 조회 */ public function data(SearchData $params): object { $query = $this->query(); $query->select('tb_document.*'); if ($params->keyword) { switch ($params->field) { case 'tb_document.subject' : case 'tb_document.content' : case 'users.name' : case 'users.email' : $query->where($params->field, 'LIKE', "%{$params->keyword}%"); break; case 'tb_document.code' : $query->where($params->field, 'LIKE', "{$params->keyword}%"); break; case 'tb_document.id' : case 'users.id' : $query->where($params->field, '=', $params->keyword); break; } } $query->leftJoin('users', 'users.id', '=', 'tb_document.user_id'); $query->orderByDesc('tb_document.id'); $list = $query->paginate($params->perPage, ['*'], 'page', $params->page); $total = $this->count(); $rows = $list->count(); return (object)[ 'total' => $total, 'rows' => $rows, 'list' => $list ]; } /** * 문서 정보 조회 */ public function findByCode(string $code): Document { return $this->where('code', $code)->firstOrNew(); } }