Version 8 (modified by 3 days ago) ( diff ) | ,
---|
Пребарување на дестинации
Актери
Регистриран корисник
Реализација
- Внесување на критериуми за пребарување. Корисникот пристапува до функцијата за пребарување на дестинации, ги внесува своите преференции:
- Тип на место (на пример, море, планина)
- Посакувана сезона (пролет, лето, есен, зима)
- Приоритет (популарност од 1 до 10)
- Корисникот има можност да ги филтрира резултатите според горенаведените преференци.
SELECT DISTINCT d.* FROM DESTINACII d LEFT JOIN RECENZII r ON d.idDest = r.idDest WHERE (:tip IS NULL OR d.tipoviMesta ILIKE CONCAT('%', :tip, '%')) AND (:sezona IS NULL OR d.preporachanaSezona ILIKE CONCAT('%', :sezona, '%')) AND ( :prioritet_min IS NULL OR :prioritet_max IS NULL OR d.idTag IN ( SELECT idTag FROM TAGOVI WHERE tagOznaka::int BETWEEN :prioritet_min AND :prioritet_max ) )
public function index(Request $request) { $tip = $request->input('tipovimesta'); $sezona = $request->input('preporachanasezona'); $popularnost = $request->input('popularnost'); $prioritet_min = null; $prioritet_max = null; if ($popularnost && str_contains($popularnost, '-')) { [$prioritet_min, $prioritet_max] = explode('-', $popularnost); } $sql = " SELECT DISTINCT d.* FROM DESTINACII d LEFT JOIN RECENZII r ON d.idDest = r.idDest WHERE (:tip IS NULL OR d.tipoviMesta ILIKE CONCAT('%', :tip, '%')) AND (:sezona IS NULL OR d.preporachanaSezona ILIKE CONCAT('%', :sezona, '%')) AND ( :prioritet_min IS NULL OR :prioritet_max IS NULL OR d.idTag IN ( SELECT idTag FROM TAGOVI WHERE tagOznaka::int BETWEEN :prioritet_min AND :prioritet_max ) ) "; $destinacii = DB::select($sql, [ 'tip' => $tip !== 'any' ? $tip : null, 'sezona' => $sezona !== 'any' ? $sezona : null, 'prioritet_min' => $prioritet_min, 'prioritet_max' => $prioritet_max, ]); return view('destinations.index', compact('destinacii')); }
Note:
See TracWiki
for help on using the wiki.