Mon site Web fonctionne bien jusqu’à ce que je l’ai déployé sur heroku et le problème est que heroku utilise pgsql et j’utilise mysql et laravel).
ma requête est
$patient = Patient::where('patient_address', 'ILIKE' ,'%' . $request->input)->where('patient_sex', 'ILIKE' ,'%' . $request->gender)->whereHas('users', function($q) use($vaccine_id){
$q->where('vaccine_id','ILIKE','%' . $vaccine_id);
})->get();
voici ce que je reçois quand je le déploie à heroku
SQLSTATE[42883]: Undefined function: 7 ERROR: operator does not exist: integer ~~* unknown LINE 1: ...ient_id" = "patients"."PatientID" and "vaccine_id" ILIKE $3)
HINT: No operator matches the given name and argument type(s). You might need to add explicit type casts. (SQL: select * from "patients" where "patient_address" ILIKE %San Francisco and "patient_sex" ILIKE % and exists (select * from "vaccines" inner join "immunizations" on "vaccines"."VaccineID" = "immunizations"."vaccine_id" where "immunizations"."patient_id" = "patients"."PatientID" and "vaccine_id" ILIKE %))
J'ai essayé d'utiliser cast comme CAST (vaccin_id AS VARCHAR) et je ne reçois pas l'erreur, mais cela ne renvoie aucun résultat.
Le problème est ici:
$q->where('vaccine_id','ILIKE','%' . $vaccine_id)
ressemble à vaccin_id est un entier, et vous ne pouvez pas utiliser l'opérateur ILIKE en 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
au lieu
WHERE "vaccine_id" ILIKE val