我的网站只是工作正常,直到我部署到heroku和问题是heroku使用pgsql和我使用mysql和laravel框架。
我的疑问是
$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();
这是我把它部署到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 %))
我试过使用像CAST(vaccine_id AS VARCHAR)这样的类型转换,我没有得到错误,但它没有返回任何结果。
3条答案
按热度按时间9avjhtql1#
问题就在这里:
看起来vaccine_id是整型的,你不能使用操作符ILIKE来整型。试试“=”
如果你想使用LIKE,ILIKE或其他文本操作符,你必须将数据转换为文本。在SQL中,它看起来像:
相反
bhmjp9jg2#
你可以这样做:
或
luaexgnf3#
显式强制转换是必须使用CAST AS关键字或强制转换运算符(::)