public static function search_users($q) { $cleaner = new Cleaner(); $cleaned_array = $cleaner->parseString($q); $stemmed_array = array_map('PorterStemmer::Stem', $cleaned_array); $users = User::with('metadata')->distinct(); $users = $users->where(function ($query) use($stemmed_array) { $query->where('username', 'LIKE', '%' . array_get($stemmed_array, 0) . '%'); for ($i = 1; $i < count($stemmed_array); $i++) { $query->or_where('username', 'LIKE', '%' . array_get($stemmed_array, $i) . '%'); } }); $users = $users->or_where(function ($query) use($stemmed_array) { $query->where('email', 'LIKE', '%' . array_get($stemmed_array, 0) . '%'); for ($i = 1; $i < count($stemmed_array); $i++) { $query->or_where('email', 'LIKE', '%' . array_get($stemmed_array, $i) . '%'); } }); $users = $users->order_by('created_at', 'DESC'); $users = $users->paginate(Config::get('smarttoys.records_per_page')); return array(implode(' ', $cleaned_array), $users); }