Ejemplo n.º 1
0
 public function favorites(Request $request, $id, $type)
 {
     if ($request->input('sort') == 'rating') {
         $sort = 'rating';
     } else {
         $sort = 'updated_at';
     }
     $favorites = Favorite::with(['drama' => function ($query) {
         $query->select('id', 'title', 'sc');
     }])->select('drama_id', 'type', 'rating', 'tags', 'updated_at')->where('user_id', $id)->where('type', $type)->orderBy($sort, 'desc')->simplePaginate(20);
     return $favorites;
 }
Ejemplo n.º 2
0
 public function index(Request $request)
 {
     //判断url中是否有性向参数,若没有就默认性向为耽美type=0
     if ($request->has('type')) {
         $type = $request->input('type');
     } else {
         $type = 0;
     }
     //若type为-1,则查询全部新剧,否则按性向即type值查询
     if ($type < 0) {
         $episodes = Episode::join('dramas', function ($join) {
             $join->on('episodes.drama_id', '=', 'dramas.id')->where('episodes.release_date', '>=', date("Y-m-d", strtotime("-7 day")));
         })->select('dramas.title as drama_title', 'dramas.type as type', 'dramas.original as original', 'episodes.id as episode_id', 'episodes.title as episode_title', 'episodes.reviews as reviews', 'episodes.release_date as release_date', 'dramas.sc as sc', 'episodes.alias as alias', 'episodes.poster_url as poster_url', 'dramas.era as era', 'dramas.genre as genre', 'dramas.state as state', 'episodes.duration as duration')->orderBy('episode_id', 'desc')->get();
     } else {
         $episodes = Episode::join('dramas', function ($join) use($type) {
             $join->on('episodes.drama_id', '=', 'dramas.id')->where('dramas.type', '=', $type)->where('episodes.release_date', '>=', date("Y-m-d", strtotime("-7 day")));
         })->select('dramas.title as drama_title', 'dramas.type as type', 'dramas.original as original', 'episodes.id as episode_id', 'episodes.title as episode_title', 'episodes.reviews as reviews', 'episodes.release_date as release_date', 'dramas.sc as sc', 'episodes.alias as alias', 'episodes.poster_url as poster_url', 'dramas.era as era', 'dramas.genre as genre', 'dramas.state as state', 'episodes.duration as duration')->orderBy('episode_id', 'desc')->get();
     }
     $top10 = $episodes->take(10);
     //将一周新剧按发剧日期分组
     $episodes = $episodes->groupBy('release_date');
     //查询60天收藏数前10的剧单
     $lists = Listfav::with(['dramalist' => function ($query) {
         $query->select('id', 'title');
     }])->select(DB::raw('count(*) as favorite_count, list_id'))->where('created_at', '>=', date("Y-m-d H:i:s", strtotime("-60 day")))->groupBy('list_id')->orderBy('favorite_count', 'desc')->take(10)->get();
     //最新剧单
     $newlists = Dramalist::select('id', 'title')->orderBy('id', 'desc')->take(10)->get();
     //查询30天评论数前10的剧集id
     $hotDramas = Review::with(['drama' => function ($query) {
         $query->select('id', 'title');
     }])->where('created_at', '>=', date("Y-m-d H:i:s", strtotime("-30 day")))->select(DB::raw('count(*) as review_count, drama_id'))->groupBy('drama_id')->orderBy('review_count', 'desc')->take(10)->get();
     //查询30天收藏前10的剧集id
     $hotFavorites = Favorite::with(['drama' => function ($query) {
         $query->select('id', 'title');
     }])->where('created_at', '>=', date("Y-m-d H:i:s", strtotime("-30 day")))->select(DB::raw('count(*) as favorite_count, drama_id'))->groupBy('drama_id')->orderBy('favorite_count', 'desc')->take(10)->get();
     //查询最新10条新剧的添加历史
     $versions = Dramaver::select('user_id', 'drama_id', 'created_at')->where('first', 1)->orderBy('drama_id', 'desc')->take(10)->get();
     $versions->load(['user' => function ($query) {
         $query->select('id', 'name');
     }]);
     $versions->load(['drama' => function ($query) {
         $query->select('id', 'title', 'sc');
     }]);
     $versions = $versions->filter(function ($version) {
         return isset($version->drama->id);
     });
     return view('index', ['type' => $type, 'episodes' => $episodes, 'top10' => $top10, 'lists' => $lists, 'newlists' => $newlists, 'hotDramas' => $hotDramas, 'hotFavorites' => $hotFavorites, 'versions' => $versions]);
 }
Ejemplo n.º 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]);
 }
Ejemplo n.º 4
0
 public function lists()
 {
     //最新剧单
     $newLists = Dramalist::select('id', 'title')->orderBy('id', 'desc')->take(10)->get();
     //查询60天收藏数前10的剧单
     $hotLists = Listfav::with(['dramalist' => function ($query) {
         $query->select('id', 'title');
     }])->select(DB::raw('count(*) as favorite_count, list_id'))->where('created_at', '>=', date("Y-m-d H:i:s", strtotime("-60 day")))->groupBy('list_id')->orderBy('favorite_count', 'desc')->take(10)->get();
     //查询30天评论数前10的剧集id
     $hotDramas = Review::with(['drama' => function ($query) {
         $query->select('id', 'title');
     }])->where('created_at', '>=', date("Y-m-d H:i:s", strtotime("-30 day")))->select(DB::raw('count(*) as review_count, drama_id'))->groupBy('drama_id')->orderBy('review_count', 'desc')->take(10)->get();
     //查询30天收藏前10的剧集id
     $hotFavorites = Favorite::with(['drama' => function ($query) {
         $query->select('id', 'title');
     }])->where('created_at', '>=', date("Y-m-d H:i:s", strtotime("-30 day")))->select(DB::raw('count(*) as favorite_count, drama_id'))->groupBy('drama_id')->orderBy('favorite_count', 'desc')->take(10)->get();
     return ['newLists' => $newLists, 'hotLists' => $hotLists, 'hotDramas' => $hotDramas, 'hotFavorites' => $hotFavorites];
 }
Ejemplo n.º 5
0
 public function favorites($id)
 {
     $drama = Drama::find($id, ['id', 'title']);
     $favorites = Favorite::with(['user' => function ($query) {
         $query->select('id', 'name');
     }])->select('user_id', 'type', 'updated_at')->where('drama_id', $id)->orderBy('updated_at')->paginate(20);
     return view('drama.favorites')->withDrama($drama)->withFavorites($favorites);
 }
Ejemplo n.º 6
0
 public function exportFavorites()
 {
     $favorites = Favorite::with(['drama' => function ($query) {
         $query->select('id', 'title', 'sc');
     }])->select('drama_id', 'type', 'rating', 'updated_at')->where('user_id', Auth::id())->get();
     $str = "剧集,主役,收藏类型,评分,更新时间\n";
     foreach ($favorites as $favorite) {
         switch ($favorite->type) {
             case 0:
                 $type = '想听';
                 break;
             case 1:
                 $type = '在追';
                 break;
             case 2:
                 $type = '听过';
                 break;
             case 3:
                 $type = '搁置';
                 break;
             default:
                 $type = '抛弃';
         }
         $str .= "\"" . str_replace("\"", "\"\"", $favorite->drama->title) . "\",\"" . str_replace("\"", "\"\"", $favorite->drama->sc) . "\"," . $type . ",\"" . ($favorite->rating != 0 ? $favorite->rating : '') . "\"," . $favorite->updated_at . "\n";
     }
     $headers = array('Content-Type' => 'text/csv', 'Content-Disposition' => 'attachment; filename="favorites.csv"');
     return response($str, 200, $headers);
 }