public function show(Request $request, $id) { $episode = Episode::find($id, ['id', 'drama_id', 'title', 'alias', 'release_date', 'url', 'sc', 'duration', 'poster_url', 'introduction', 'reviews']); $episode->load(['drama' => function ($query) { $query->select('id', 'title', 'type', 'era', 'genre', 'original'); }]); if (Auth::check()) { $episode->userFavorite = Epfav::select('type', 'rating')->where('user_id', $request->user()->id)->where('episode_id', $id)->first(); } return $episode; }
public function epfavs(Request $request, $id, $type) { if ($request->has('sort')) { $sort = $request->input('sort'); } else { $sort = 'updated_at'; } $favorites = Epfav::with(['episode' => function ($query) { $query->join('dramas', 'dramas.id', '=', 'episodes.drama_id')->select('episodes.id as id', 'dramas.title as dramaTitle', 'episodes.title as title', 'dramas.sc as cv', 'episodes.duration as duration'); }])->select('episode_id', 'type', 'rating', 'updated_at')->where('user_id', $id)->where('type', $type)->orderBy($sort, 'desc')->simplePaginate(20); return $favorites; }
public function index() { $favorites = Favorite::with(['user' => function ($query) { $query->select('id', 'name'); }, 'drama' => function ($query) { $query->select('id', 'title'); }])->select('user_id', 'drama_id', 'type', 'updated_at')->orderBy('updated_at', 'desc')->take(50)->get(); $epfavs = Epfav::join('episodes', function ($join) { $join->on('episodes.id', '=', 'epfavs.episode_id'); })->join('dramas', function ($join) { $join->on('dramas.id', '=', 'episodes.drama_id'); })->select('user_id', 'drama_id', 'dramas.title as drama_title', 'episode_id', 'episodes.title as episode_title', 'epfavs.type as type', 'epfavs.updated_at as updated_at')->orderBy('epfavs.updated_at', 'desc')->take(50)->get(); $epfavs->load(['user' => function ($query) { $query->select('id', 'name'); }]); return view('favorite.index', ['favorites' => $favorites, 'epfavs' => $epfavs]); }
public function favorites($id) { $episode = Episode::find($id, ['id', 'drama_id', 'title']); $drama = Drama::find($episode->drama_id, ['title']); $favorites = Epfav::with(['user' => function ($query) { $query->select('id', 'name'); }])->select('user_id', 'type', 'updated_at')->where('episode_id', $id)->orderBy('updated_at')->paginate(20); return view('episode.favorites', ['episode' => $episode, 'drama' => $drama, 'favorites' => $favorites]); }
public function destroy(Request $request, $episode_id) { $user_id = $request->user()->id; $favorite = Epfav::select('type')->where('user_id', $user_id)->where('episode_id', $episode_id)->first(); $result = DB::table('epfavs')->where('user_id', $user_id)->where('episode_id', $episode_id)->delete(); if ($result) { DB::table('users')->where('id', $user_id)->decrement('epfav' . $favorite->type); DB::table('episodes')->where('id', $episode_id)->decrement('favorites'); return ['result' => 'success']; } return response('删除失败> <', 422); }
/** * Display the specified resource. * * @param int $id * @return Response */ public function show(Request $request, $id) { $drama = Drama::find($id, ['id', 'title', 'alias', 'type', 'era', 'genre', 'original', 'count', 'state', 'sc', 'poster_url', 'introduction', 'reviews', 'favorites']); $episodes = Episode::select('id', 'title', 'alias', 'release_date', 'url', 'sc', 'duration', 'poster_url', 'introduction')->where('drama_id', $id)->orderByRaw('release_date, id')->get(); $roles = Role::with(['sc' => function ($query) { $query->select('id', 'name'); }])->select('sc_id', 'job')->distinct()->where('drama_id', $id)->whereIn('job', [0, 1, 2, 3, 4, 11])->get(); $roles = $roles->groupBy('job'); $reviews = Review::with(['user' => function ($query) { $query->select('id', 'name'); }, 'episode' => function ($query) { $query->select('id', 'title'); }])->select('id', 'episode_id', 'user_id', 'title', 'content', 'created_at', 'banned')->where('drama_id', $id)->orderBy('id', 'desc')->take(20)->get(); $eds = Ed::with(['song' => function ($query) { $query->select('id', 'title', 'artist'); }])->select('song_id')->distinct()->where('drama_id', $id)->get(); $listids = Item::select('list_id')->where('drama_id', $id)->where('episode_id', 0)->orderBy('id', 'desc')->take(10)->lists('list_id'); $lists = Dramalist::with(['user' => function ($query) { $query->select('id', 'name'); }])->select('id', 'title', 'user_id')->whereIn('id', $listids)->get(); $favorites = Favorite::with(['user' => function ($query) { $query->select('id', 'name'); }])->select('user_id', 'type', 'updated_at')->where('drama_id', $id)->orderBy('updated_at', 'desc')->take(5)->get(); $tagmaps = Tagmap::with('tag')->select(DB::raw('count(*) as count, tag_id'))->where('drama_id', $id)->groupBy('tag_id')->orderBy('count', 'desc')->take(20)->get(); //若用户已登录则取得其对整部剧及每个分集的收藏状态,及其全部评论 $epfavs = []; if (Auth::check()) { $user_id = $request->user()->id; $favorite = Favorite::select('id', 'user_id', 'type', 'rating', 'tags')->where('user_id', $user_id)->where('drama_id', $id)->first(); $ids = $episodes->pluck('id'); $rows = Epfav::select('episode_id', 'type', 'rating')->where('user_id', $user_id)->whereIn('episode_id', $ids->all())->get(); foreach ($rows as $row) { $epfavs[$row->episode_id] = $row; } $userReviews = Review::with(['episode' => function ($query) { $query->select('id', 'title'); }])->select('id', 'episode_id', 'title', 'content', 'created_at')->where('user_id', $user_id)->where('drama_id', $id)->get(); $usertags = Tagmap::with('tag')->select(DB::raw('count(*) as count, tag_id'))->where('user_id', $user_id)->groupBy('tag_id')->orderBy('count', 'desc')->take(15)->get(); } else { $favorite = 0; $userReviews = 0; $usertags = []; } return view('drama.show', ['drama' => $drama, 'episodes' => $episodes, 'reviews' => $reviews, 'eds' => $eds, 'roles' => $roles, 'lists' => $lists, 'favorites' => $favorites, 'tagmaps' => $tagmaps, 'favorite' => $favorite, 'epfavs' => $epfavs, 'userReviews' => $userReviews, 'usertags' => $usertags]); }
public function destroy(Request $request, $episode_id) { $user_id = $request->user()->id; $favorite = Epfav::select('type')->where('user_id', $user_id)->where('episode_id', $episode_id)->first(); $result = DB::table('epfavs')->where('user_id', $user_id)->where('episode_id', $episode_id)->delete(); if ($result) { DB::table('users')->where('id', $user_id)->decrement('epfav' . $favorite->type); DB::table('episodes')->where('id', $episode_id)->decrement('favorites'); } return redirect()->back(); }
public function epfavs(Request $request, $id, $type) { $user = User::find($id, ['id', 'name']); if ($request->has('sort')) { $sort = $request->input('sort'); } else { $sort = 'updated_at'; } $favorites = Epfav::with(['episode' => function ($query) { $query->join('dramas', 'dramas.id', '=', 'episodes.drama_id')->select('episodes.id as id', 'drama_id', 'dramas.title as drama_title', 'episodes.title as title', 'dramas.sc as cv', 'episodes.duration as duration'); }])->select('episode_id', 'type', 'rating', 'updated_at')->where('user_id', $id)->where('type', $type)->orderBy($sort, 'desc')->paginate(20); return view('user.epfavs', ['user' => $user, 'type' => $type, 'favorites' => $favorites, 'sort' => $sort]); }