Vấn đề là ở đây:
$q->where('vaccine_id','ILIKE','%' . $vaccine_id)
có vẻ như vaccine_id là số nguyên và bạn không thể sử dụng toán tử ILIKE thành số nguyên. Chỉ thử '='
Nếu bạn muốn sử dụng LIKE, ILIKE hoặc toán tử văn bản khác, bạn phải truyền dữ liệu của mình thành văn bản. Trong SQL, nó phải giống như sau:
WHERE "vaccine_id"::text ILIKE val
thay vào đó
WHERE "vaccine_id" ILIKE val