Sorry, opet ja.
Dakle, napravih live search (jQuery).
Test site (zanemarite izgled, nije bitan, nego samo ova dva polja za search): http://dragutinmitrecic.from.hr/ (i link zanemarite, testna je stranica za igranje, lokalni testni server pored mene u uredu).
Isti upit, Laravel je očajno spor, dok core PHP radi neusporedivo brže za isti search (testirajte npr sa riječi Zadar ili neki drugi Hr grad). Gornji input je sa korištenjem ajax → Laravel (u produžetku je controller), dok je donji input sa korištenjem core PHP-a (ajax->core PHP file).
Radim li nešto pogrešno ili je normalno? Postoji li neki “trik” da se ne mora učitavati cijeli framework prilikom pretraživanja baze kod ovakvog live searcha? Ili je najbolje (zbog brzine) kod live searcha koristiti core PHP?
Dakle, u ajax (index stranica) stavih:
url:“{{URL::to(‘/axsearch’)}}”
U routes (/web.php):
Route::get(‘/axsearch’,‘SearchController@search’);
Controller (SearchController.php):
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Gradovi;
use App\Apartman;
class SearchController extends Controller
{
//
private $keyword;
private $foundgrad;
private $foundapartman;
public function search(Request $request)
{
if($request->ajax()){
$this->keyword=$request->query('find');
$this->searchCity();
$this->searchApartman();
$gradovi=$this->foundgrad;
$apartmani=$this->foundapartman;
return view("search")->with("gradovi",$gradovi)->with("apartmani",$apartmani);
}
return redirect()->route("home");
}
private function searchCity()
{
$grad=Gradovi::select("id","hr")->where("hr","like","%".$this->keyword."%")->take(5)->get();
$this->foundgrad=$grad;
}
private function searchApartman()
{
$apartman=Apartman::select("id","naziv")->where("naziv","like","%".$this->keyword."%")->take(5)->get();
$this->foundapartman=$apartman;
}
}
View (search.blade.php):
<ul class="srch-list"> @foreach($gradovi as $grad) <li data-item="{{$grad['id']}}" data-orig="{{$grad['hr']}}"><i class="fas fa-map-marked-alt icon"></i><span>{{$grad['hr']}}</span><p>Grad</p></li> @endforeach @foreach($apartmani as $apartman) <li data-item="{{$apartman['id']}}" data-orig="{{$apartman['naziv']}}"><i class="fas fa-bed icon"></i><span>{{$apartman['naziv']}}</span><p>Smještaj</p></li> @endforeach </ul>
Može li se to kako ubrzati, ili je jedini način da napravim brže pretraživanje u live searchu - koristiti core PHP?