3 回答

TA貢獻(xiàn)1852條經(jīng)驗(yàn) 獲得超7個(gè)贊
我建議首先重構(gòu)這個(gè)代碼:
public function raport(Request $request)
{
//... some code
if(!$request->has('all')){
$date=date('Y-m-01');
if(!$request->filled('users')){
$query = Users::where('data', '>=', $date);
}else{
$query = Users::where('id_users', $request->input('users'))->where('data', '>=', $date);
}
}else{
if(!$request->filled('users')){
$query = Users::all();
}else{
$query = Users::where('id_users', $request->input('users'));
}
}
$raport=$query->orderBy('id_users', 'asc')->get();
//... another some code
}
它可能無法解決您的問題,但它更清楚。
筆記:
錯(cuò)誤Illegal operator and value combination可能是由于空值和字段(例如日期時(shí)間)之間的比較
如果您想確定請(qǐng)求中是否存在某個(gè)值且不為空,您可以使用該filled方法

TA貢獻(xiàn)1864條經(jīng)驗(yàn) 獲得超6個(gè)贊
你有這個(gè)價(jià)值
<input class="form-check-input" name="all" type="checkbox" value="1" id="all">
這意味著您發(fā)送值復(fù)選框 = 1
如果您沒有設(shè)置該值,那么它的默認(rèn)值是 = on
因此將整數(shù)與字符串進(jìn)行比較導(dǎo)致您的錯(cuò)誤
在您的情況下,laravel 在 request 中有方法,因此您可以檢查表單中的復(fù)選框是否已選中
你可以像這樣在你的代碼中應(yīng)用它
if(!$request->has('all') && empty($request->input('users')))
{
$raport = Users::where('data', '>=', $request->input('data'))
->orderBy('id_users', 'asc')->get();
}
elseif($request->has('all') && !empty($request->input('users')))
{
$raport = Users::where('id_users', $request->input('users'))
->orderBy('id_users', 'asc')->get();
}
elseif($request->has('all') && empty($request->input('users')))
{
$raport = Users::orderBy('id_users', 'asc')->get();
}
elseif(!$request->has('all') && !empty($request->input('users')))
{
$raport = Users::where('id_users', $request->input('users'))
->where('data', '>=', $request->input('data'))
->orderBy('id_users', 'asc')->get();
}
- 3 回答
- 0 關(guān)注
- 179 瀏覽
添加回答
舉報(bào)