model->newQuery(); if (!empty($filters['search'])) { $query->where(function ($q) use ($filters) { $q->where('nom_entreprise', 'like', '%' . $filters['search'] . '%') ->orWhere('contact_principal', 'like', '%' . $filters['search'] . '%') ->orWhere('email', 'like', '%' . $filters['search'] . '%') ->orWhere('siret', 'like', '%' . $filters['search'] . '%') ->orWhere('numero_contrat', 'like', '%' . $filters['search'] . '%') ->orWhere('type_prestation', 'like', '%' . $filters['search'] . '%'); }); } if (!empty($filters['statut'])) { $query->where('statut', $filters['statut']); } $sortField = $filters['sort_by'] ?? 'created_at'; $sortDirection = $filters['sort_direction'] ?? 'desc'; $query->orderBy($sortField, $sortDirection); return $query->paginate($perPage); } public function searchByName(string $name) { return $this->model ->newQuery() ->where('nom_entreprise', 'like', '%' . $name . '%') ->get(); } }