/** * Get all events with criterias * * @return \Illuminate\Pagination\LengthAwarePaginator */ public function search() { $query = Events::select('events.*', \DB::raw($this->getScoringFunction() . ' as scoring')); $query = $query->leftjoin('events_scoring', 'events.id', '=', 'events_scoring.event_id'); $query = $query->where('status', 'open'); $query = $query->where('is_inspiration', '0'); $query = $query->orderBy(\DB::raw($this->getScoringFunction()), 'desc'); $query = $query->groupBy('events.id'); return $query->paginate($this->on_page); }