laravel eloquent where like operator for integer
laravel eloquent where like operator for integer
我现在正在做的是生成报告,我在一页中有多个字段,分别是地址、日期、性别和疫苗
我想要的是,即使地址为空并且我输入了性别,它仍会检索所有已选择的特定性别,如果用户未在字段中输入任何内容,它将自动检索所有记录.所以我所做的就是这个
在我的控制器中
if (!$request->input) {
$request->input = "";
}
if (!$request->vaccines) {
$vaccine_id = "";
}else{
$vaccine_id = $request->vaccines;
}
if (!$request->month) {
$newDate = " ";
}else{
$newDate = date("Y-m-d", strtotime($request->month));
}
if (!$request->gender) {
$request->gender = "";
}
$patient = Patient::where('patient_address', 'like' ,'%' . $request->input)->where('patient_sex', 'like' ,'%' . $request->gender)->whereHas('users', function($q) use($vaccine_id){
$q->where('vaccine_id', $vaccine_id);
})->get();
所以我使用了 LIKE
运算符,这样即使患者地址为空,它仍然会 return 结果与 =
运算符不同,它会自动 return false 并结束WHERE
子句的其余部分。字符串类型的列与患者地址和性别一样工作正常。但我刚刚发现您不能对整数使用 LIKE
运算符。因此,如果我在 vaccine_id 上使用 =
,如果条件为假,它将不会自动检索数据库中的所有数据,这与 LIKE
运算符不同。
有什么解决办法吗?
试试这个:
$query = Patient::where('patient_address', 'like' ,'%' . $request->input)->where('patient_sex', 'like' ,'%' . $request->gender);
if($vaccine_id != "") {
$query->whereHas('users', function($q) use($vaccine_id){
$q->where('vaccine_id', $vaccine_id);
});
}
$patient = $query->get();
我现在正在做的是生成报告,我在一页中有多个字段,分别是地址、日期、性别和疫苗
我想要的是,即使地址为空并且我输入了性别,它仍会检索所有已选择的特定性别,如果用户未在字段中输入任何内容,它将自动检索所有记录.所以我所做的就是这个
在我的控制器中
if (!$request->input) {
$request->input = "";
}
if (!$request->vaccines) {
$vaccine_id = "";
}else{
$vaccine_id = $request->vaccines;
}
if (!$request->month) {
$newDate = " ";
}else{
$newDate = date("Y-m-d", strtotime($request->month));
}
if (!$request->gender) {
$request->gender = "";
}
$patient = Patient::where('patient_address', 'like' ,'%' . $request->input)->where('patient_sex', 'like' ,'%' . $request->gender)->whereHas('users', function($q) use($vaccine_id){
$q->where('vaccine_id', $vaccine_id);
})->get();
所以我使用了 LIKE
运算符,这样即使患者地址为空,它仍然会 return 结果与 =
运算符不同,它会自动 return false 并结束WHERE
子句的其余部分。字符串类型的列与患者地址和性别一样工作正常。但我刚刚发现您不能对整数使用 LIKE
运算符。因此,如果我在 vaccine_id 上使用 =
,如果条件为假,它将不会自动检索数据库中的所有数据,这与 LIKE
运算符不同。
有什么解决办法吗?
试试这个:
$query = Patient::where('patient_address', 'like' ,'%' . $request->input)->where('patient_sex', 'like' ,'%' . $request->gender);
if($vaccine_id != "") {
$query->whereHas('users', function($q) use($vaccine_id){
$q->where('vaccine_id', $vaccine_id);
});
}
$patient = $query->get();