composer.json
{ "require": { "php": "^8.0", // "tucker-eric/eloquentfilter": "^2.2" },}
{ "require": { "php": "^8.0", // "tucker-eric/eloquentfilter": "^2.2" },}
use App\Models\Exception;use EloquentFilter\ModelFilter; class ProjectFilter extends ModelFilter{ public function search($value) { return $this->where('title', 'like', '%' . $value . '%'); } public function hasOpenExceptions($value) { if (!$value) { return $this; } return $this->whereHas('exceptions', function ($query) { return $query->where('status', Exception::OPEN); }); }}
use App\Models\Project; class ProjectController extends Controller{ public function index() { $projects = auth()->user() ->projects() ->select('id', 'title', 'total_exceptions') ->withCount('unreadExceptions') ->filter(request()->only('search')) ->latest('last_error_at') ->latest('created_at') ->paginate(); return inertia('Projects/Index', [ 'filters' => request()->only('search'), 'projects' => $projects, ]); }}