public static function search_events($q) { $cleaner = new Cleaner(); $cleaned_array = $cleaner->parseString($q); $stemmed_array = array_map('PorterStemmer::Stem', $cleaned_array); $events = GroupEvent::distinct(); $events = $events->where(function ($query) use($stemmed_array) { $query->where('name', 'LIKE', '%' . array_get($stemmed_array, 0) . '%'); for ($i = 1; $i < count($stemmed_array); $i++) { $query->or_where('name', 'LIKE', '%' . array_get($stemmed_array, $i) . '%'); } }); $events = $events->or_where(function ($query) use($stemmed_array) { $query->where('place', 'LIKE', '%' . array_get($stemmed_array, 0) . '%'); for ($i = 1; $i < count($stemmed_array); $i++) { $query->or_where('place', 'LIKE', '%' . array_get($stemmed_array, $i) . '%'); } }); $events = $events->or_where(function ($query) use($stemmed_array) { $query->where('event_date', 'LIKE', '%' . array_get($stemmed_array, 0) . '%'); for ($i = 1; $i < count($stemmed_array); $i++) { $query->or_where('event_date', 'LIKE', '%' . array_get($stemmed_array, $i) . '%'); } }); $events = $events->or_where(function ($query) use($stemmed_array) { $query->where('description', 'LIKE', '%' . array_get($stemmed_array, 0) . '%'); for ($i = 1; $i < count($stemmed_array); $i++) { $query->or_where('description', 'LIKE', '%' . array_get($stemmed_array, $i) . '%'); } }); $events = $events->order_by('created_at', 'DESC'); $events = $events->paginate(Config::get('app.paginator_count')); return array(implode(' ', $cleaned_array), $events); }