Day 22 #100DaysOfCode. Sử dụng Sort (orderby) cho nhiều cột dữ liệu
VD:http://127.0.0.1:8000/?sort=Name
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Models\Category; class TestController extends Controller { public function index(Request $request){ $sortColumn = $request->input('sort', 'name'); //or $sortColumn = $request->sort; return Category::orderBy($sortColumn)->paginate(20); } }
Ta có thể check "desc","asc" với cách sử dụng dưới đây, trước tiên ta cần cài đặt thư viện bên dưới đây, để có thể sử dụng được start_with
VD:http://127.0.0.1:8000/?sort=-Name
composer require laravel/helpers
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Models\Category; class TestController extends Controller { public function index(Request $request){ $sortColumn = $request->input('sort', 'name'); $sortDirection = starts_with($sortColumn, '-') ? 'desc' : 'asc'; $sortColumn = ltrim($sortColumn, '-'); return Category::orderBy($sortColumn, $sortDirection) ->paginate(20); } }
Nếu bạn có nhiều code để sort giống ví dụ dưới đây, thì ta cũng có cách như sau:
VD:http://127.0.0.1:8000/?sort=Name,-Keyword
$sorts = explode(',', $request->input('sort', '')); $query = Category::query(); foreach ($sorts as $sortColumn) { $sortDirection = starts_with($sortColumn, '-') ? 'desc' : 'asc'; $sortColumn = ltrim($sortColumn, '-'); $query->orderBy($sortColumn, $sortDirection); } // Return return $query->paginate(20);