Beispiel #1
0
 public function index(Request $request)
 {
     $scope = [];
     if ($request->has('title')) {
         $scope['fts.title'] = ['LIKE', '%' . $request->input('title') . '%'];
     }
     if ($request->has('host')) {
         $scope['fts.host'] = ['LIKE', '%' . $request->input('host') . '%'];
     }
     if ($request->has('staff')) {
         $scope['staff'] = ['LIKE', '%' . $request->input('staff') . '%'];
     }
     if ($request->has('startdate') || $request->has('enddate')) {
         if (!$request->has('startdate')) {
             $scope['release_date'] = ['<=', $request->input('enddate')];
         } else {
             if (!$request->has('enddate')) {
                 $scope['release_date'] = ['>=', $request->input('startdate')];
             } else {
                 $release_date = [$request->input('startdate'), $request->input('enddate')];
             }
         }
     }
     $params = $request->except('page');
     if ($request->has('sort')) {
         $params['sort'] = $request->input('sort');
     } else {
         $params['sort'] = 'id';
     }
     if ($request->has('order')) {
         $params['order'] = $request->input('order');
     } else {
         $params['order'] = 'desc';
     }
     if (isset($release_date)) {
         $fteps = Ftep::whereBetween('release_date', $release_date)->join('fts', function ($join) use($scope) {
             $join->on('fteps.ft_id', '=', 'fts.id');
             foreach ($scope as $key => $value) {
                 $join = $join->where($key, $value[0], $value[1]);
             }
         })->select('fteps.*', 'fts.id as ft_id', 'fts.title as ft_title', 'fts.host as host')->orderBy('fteps.' . $params['sort'], $params['order'])->paginate(20);
     } else {
         $fteps = Ftep::join('fts', function ($join) use($scope) {
             $join->on('fteps.ft_id', '=', 'fts.id');
             foreach ($scope as $key => $value) {
                 $join = $join->where($key, $value[0], $value[1]);
             }
         })->select('fteps.*', 'fts.id as ft_id', 'fts.title as ft_title', 'fts.host as host')->orderBy('fteps.' . $params['sort'], $params['order'])->paginate(20);
     }
     return view('ftep.index', ['params' => $params, 'fteps' => $fteps]);
 }