Example #1
0
 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;
 }
Example #2
0
 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;
 }
Example #3
0
 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]);
 }
Example #4
0
 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]);
 }
Example #5
0
 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);
 }
Example #6
0
 /**
  * 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]);
 }
Example #7
0
 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();
 }
Example #8
0
 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]);
 }