Le problème est là :
$q->where('vaccine_id','ILIKE','%' . $vaccine_id)
ressemble à vaccine_id est un entier, et vous ne pouvez pas utiliser l'opérateur ILIKE pour un entier. Essayez juste '='
Si vous souhaitez utiliser LIKE, ILIKE ou un autre opérateur de texte, vous devez convertir vos données en texte. En SQL, cela doit ressembler à :
WHERE "vaccine_id"::text ILIKE val
à la place
WHERE "vaccine_id" ILIKE val