Exemplo n.º 1
0
 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);
 }