CountryController.php
1 <?php 2 3 namespace App\Http\Controllers\Filter; 4 5 use App\Http\Controllers\Controller; 6 use App\Models\Country; 7 use Illuminate\Contracts\Database\Eloquent\Builder; 8 use Illuminate\Http\Request; 9 use Illuminate\Support\Collection; 10 11 class CountryController extends Controller 12 { 13 /** 14 * Handle the incoming request. 15 */ 16 public function __invoke(Request $request): Collection 17 { 18 return Country::query() 19 ->select('id', 'name') 20 ->orderBy('name') 21 ->when( 22 $request->search, 23 fn (Builder $query) => $query 24 ->where('name', 'like', "%{$request->search}%") 25 ) 26 ->when( 27 $request->exists('selected'), 28 fn (Builder $query) => $query->whereIn('id', $request->input('selected', [])), 29 fn (Builder $query) => $query->limit(10) 30 ) 31 ->get(); 32 } 33 }