input('limit', 10); $page = $request->input('page', 1); $offset = ($page - 1) * 10; $lists = UserWatchRecord::filterUser() ->with(['detail.episode']) ->whereHas('detail.episode', function (Builder $query) { $query->where('is_opend', 1); }) ->orderByDesc('id') ->limit($limit) ->offset($offset) ->get(); foreach ($lists as $list) { $count = EpisodesList::where('episodes_id', $list->detail->episode->id)->count(); $list->detail->episode->total = $count; $list->detail->episode->status_text = $list->detail->episode->status; } return $this->success($lists); } public function recent() { $info = UserWatchRecord::filterUser() ->with(['detail.episode']) ->whereHas('episode', function (Builder $query) { $query->where('is_opend', 1); }) ->orderByDesc('updated_at') ->first(); if ($info) { $count = EpisodesList::where('episodes_id', $info->detail->episodes_id)->count('id'); $info->detail->episode->total = $count; $info->detail->episode->status_text = $info->detail->episode->status; } return $this->success($info); } public function watched() { $id = request()->input('id'); $listId = request()->input('list_id'); $res = UserWatchRecord::filterUser()->where('episode_id', $id)->first(); if (!$res) { $res = new UserWatchRecord(); $res->user_id = \user()->id; $res->episode_id = $id; } $res->list_id = $listId; $res->updated_at = Carbon::now()->toDateTimeString(); return $this->success($res->save()); } public function destroy($id) { $res = UserWatchRecord::filterUser()->find($id); if ($res) { $res->delete(); } return $this->success(); } }