/ app / Http / Controllers / Filter / CountryController.php
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  }