Day 23/100 #100DaysOfCode
Hôm nay tiếp tục tìm hiểu về laravel tiếp, mỗi ngày một kiến thức mới, thật là thú vị đúng không nào, bạn chỉ cần bỏ ra 1 tiếng hoặc 15,30 phút gì thôi và search từ khóa mà ta cần tìm hiểu và chịu đọc tí sẽ thu về rất nhiều điều hay mà ta có thể chưa biết đến. Sau đó hãy lưu lại nó, để sao này ta cần tới, cũng giống như tôi đang chia sẻ với mọi người vậy, lưu lại để đây, có khi cần tới thì xem lại
Có một form blade template như sau:
<form method="GET" action="/"> <input type="text" name="term" id="term"> <select name="categorie"> <option value="iphone">Iphone</option> <option value="samsung">SamSung</option> <option value="nokia">Nokia</option> <option value="xiaomi">XiaoMi</option> </select> <select name="price"> <option value="more-expensive">plus cher</option> <option value="less-expensive">Moins cher</option> </select> <button type="submit" name="search">Searh</button> </form>
Trong Controller thiếp lập function show() , để kiểm tra request từ form như sau
public function show(Request $request) { $categories = Category::query(); $categories->when($request->term, function ($query, $term) { return $query->where('title', 'like', "%{$term}%"); })->when($request->categorie, function ($query, $categorie) { return $query->where('categorie', 'like', "%{$categorie}%"); })->when($request->price && in_array($request->price, ['more-expensive', 'less-expensive']), function ($query) use ($request) { return $query->orderBy('price', $request->price == 'less-expensive' ? 'asc' : 'desc'); }, function ($query) { return $query->orderByDesc('id'); })->paginate(15); return view('welcome', compact('categories')); }
Có thể dùng thử cách bên dưới
if($request->has('search')){ $categories = Category::query(); $categories->where(function($query) use($request) { $query->where('title', 'LIKE', "%{$request->term}%" ) ->orWhere ( 'categorie', 'LIKE', "%{$request->categorie}%" ) }); $categories->when($request->price && in_array($request->price, ['more-expensive', 'less-expensive']), function ($query) use ($request) { return $query->orderBy('price', $request->price == 'less-expensive' ? 'asc' : 'desc'); } $categories->paginate(15); }