Pgsql erreur: Vous pourriez avoir besoin d'ajouter de type explicite jette
Mon site est simplement de travailler fine til je déployée à heroku et le problème est heroku utilise pgsql et je suis en utilisant mysql et le framework 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 j'obtiens quand je le déployer à 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(vaccine_id QUE VARCHAR) et je n'obtenez pas l'erreur, mais il ne retourne aucun résultat.
where "patient_address" ILIKE %San Francisco
est faux, San Francisco
doit être entre guillemets simples autant que je sache.c'est une variable $request->input = san fancisco comment puis-je mettre des guillemets simples sur elle?
Je ne suis pas sûr, que je peux vous dire que si le résultat de la requête est mot à mot, alors que c'est faux.
OriginalL'auteur Christian | 2017-02-10
Vous devez vous connecter pour publier un commentaire.
Le problème est ici:
ressemble vaccine_id est entier, et vous ne pouvez pas utiliser l'opérateur ILIKE entier. Essayez juste d' '='
Si vous voulez utiliser COMME, ILIKE ou d'un autre opérateur de texte, vous devez jeter vos données de texte. En SQL, il doit ressembler à:
au lieu
Votre erreur est
operator does not exist: integer ~~* unknown
- c'est parce que vaccine_id est entier. Entier et ne possède pas d'opérateur ILIKE (~~).alors pourquoi est-ce de travailler avec mysql? Si cela fonctionne avec mysql il devrait y avoir une solution avec pgsql
Parce que mysql n'est pas pur sql. Au moins pour moi. Probablement qu'il jette par défaut données par certaines règles.
J'ai plusieurs clause where comme, par exemple, où('age', '2')->where('nom', 'jean') si l'âge est fausse, alors il sera de retour rien que j'ai encore envie d'exécuter les autres, où (), peu importe si l'autre est fausse
OriginalL'auteur Roman Tkachuk