Beispiel #1
0
 public function search(Request $request)
 {
     if (!Auth::check()) {
         // Only for logged-in users.
         return redirect("/home");
     }
     $query = $request->input("q");
     $terms = implode(" ", explode(" ", trim($query)));
     if (isset($query) && strlen($terms) > 1) {
         $terms = explode(" ", $terms);
         $special = array("+", "-", "*", "(", ")", "<", ">");
         foreach ($terms as &$term) {
             $first = substr($term, 0, 1);
             $last = substr($term, -1);
             if (in_array($last, $special)) {
                 $term = substr($term, 0, -1);
             }
             $term = str_replace($special, "", $term);
             if ($first == '"' && $last == '"') {
                 $term = "+" . substr($term, 1, -1);
             } else {
                 $term = $term . "*";
             }
         }
         $terms = implode(" ", $terms);
         $sprites = Sprite::whereRaw("MATCH(title,description,colors) AGAINST(? IN BOOLEAN MODE)", [$terms])->orderBy("created_at", "desc")->get();
         return view("home", ["sprites" => $sprites, "query" => $query]);
     } else {
         return redirect("home");
     }
 }