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