我正在尝试提交一个保存燃料详细信息的表格,它应检查$ vehicleMonitored是否为官方。如果是官员,则应检查所要求的总燃油量是否不超过其每周限额。该代码可以正常工作,因为如果您尝试请求的燃油超过特定官员的燃油限额,则会弹出错误,但在您请求的燃油低于该官员的燃油限额的情况下,它不会保存数据。它在下面抛出错误:
“传递给App \ Http \ Controllers \ Controller :: validate()的参数1必须是Illuminate \ Http \ Request的实例,给定的整数,在C:\ xampp \ htdocs \ laravel \ app \ Http \ Controllers \中调用2044行的FuelController.php◀“
错误行2044指向验证程序'date'=>'required | max:255',
public function store(Request $request)
{
$this->validate($request, [
'date' => 'required|max:255',
'liters' => 'required',
'type' => 'required',
'vehicle_generator'=> 'required',
'recipient'=> 'required',
'vehicle_type'=> 'required',
'voucher' => 'required',
'authorized_by'=> 'required',
]);
$requestedFuel = $request->input('liters');
$vehicleMonitored = $request->input('vehicle_type');
if($vehicleMonitored == 'official'){
$official = $request->input('recipient');
$sum = DB::table('fuels')->whereBetween('created_at', [
Carbon::now()->startOfWeek(),
Carbon::now()->endOfWeek(),
])->where('recipient',$official)->sum('liters');
$Name = Officials::where(DB::raw('concat(Name," ",Surname)') ,$official )->get();
$name = $Name->pluck('Fuel_Limit');
$limit = $name->first();
$over = $limit - $sum;
// sum of liters plus requested liters
$request = $requestedFuel + $sum;
// dd($limit);
if($limit != null){
if($request >= $limit){
return redirect('fuels')->with('error', $official ." has just " .$over.'Liters remaining for the week ');
}
if($sum > $limit){
return redirect('fuels')->with('error', $official .' readched weekly fuel limit ');
}
}
}
//getting input of liters and reg. no:
$myliters = $request->input('liters');
$regs = $request->input('vehicle_generator');
//saves to db
Fuel::create($request->all());
//return message
if($vehicleMonitored == 'official'){
return redirect('fuels')->with('success', " You have sucessfully Supplied ".$myliters."L to ".$official. " for ".$regs);
}
else{
return redirect('fuels')->with('success', " You have sucessfully Supplied ".$myliters."L to ".$regs);
}
}
您将在此行覆盖$request
变量:
// sum of liters plus requested liters
$request = $requestedFuel + $sum;
简单地改用其他名称(在此以及在所有其他希望此整数的行中。验证器的使用应保持不变:
// sum of liters plus requested liters
$requestSum = $requestedFuel + $sum;
// dd($limit);
if($limit != null){
if($requestSum >= $limit){
...
您显然正在将变量$request
重新分配为整数。如果要将其用作Request对象,请不要这样做。如果需要在变量中存储一些值,请创建一个新变量。