0

私が今取り組んでいるのはレポートの生成で、1 つのページに住所、日付、性別、ワクチンの複数のフィールドがあります。

私が望むのは、アドレスが空で性別を入力した場合でも、選択された特定の性別をすべて取得し、ユーザーがフィールドに何も入力していない場合は自動的にすべてのレコードを取得することです。だから私がしたことはこれです

私のコントローラーで

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そのため、患者の住所が空であっても、演算子とは異なり、結果が返されるように演算子を使用しました。=これは、自動的に false を返し、WHERE句の残りを終了します。患者の住所や性別のように、文字列型の列は問題なく機能しています。LIKEしかし、整数に演算子を使用できないことがわかりました。したがって=、vaccine_id で使用すると、条件が false の場合、LIKEオペレーターとは異なり、データベース上のすべてのデータが自動的に取得されるわけではありません。

これに対する解決策はありますか?

4

1 に答える 1