方法store()和update()

时间:2019-10-14 20:53:49

标签: php laravel laravel-5

我必须在我的方法store()中进行付款日期和休会日期之间的检查。 方法store()可以!

$datePayment = Payment::where('fk_student', $request->get('fk_student'))
->whereDate('date_payment', ">" , $date_seance)
->first();

 if(isset($datePayment)){
            return redirect()->route('trainings.index')
                ->with('error', 'There is a problem with the payment date! ');
}

我的问题出在我的函数update()中,我被卡住了。当我更改date_seance的值时,没有检查。

$datePayment = Payment::where('fk_student', $request->get('fk_student'))
->whereDate('date_payment', ">" , $date_seance)
->first();

if(isset($datePayment)){
    return redirect()->route('trainings.index')
    ->with('error', 'There is a problem with the payment date! ');
}

else{
   $trainings = Training::find($id);
   $trainings->date_seance = $request->get('date_seance');
   ...
   $trainings->save();
   return redirect()->route('trainings.index')
    ->with('success', 'Update!')->withInput();
   }

我知道我的问题在这里:

if(isset($datePayment)){
        return redirect()->route('trainings.index')
        ->with('error', 'There is a problem with the payment date! ');
    }

谢谢您的帮助。

1 个答案:

答案 0 :(得分:2)

如果该方法在update($id)方法内,则对date_seance所做的更改将不作任何检查,因为查询正在寻找错误的学生付款。

在寻找付款支票之前,请获取方法内正在更新的培训模型(从传入的$id中获取)。这将从模型中获得正确的学生id。所以..

在更新方法中:

 $training = Training::find($id);
 $datePayment = Payment::where('fk_student', $training->fk_student) // NOT from $request
    ->whereDate('date_payment', ">" , $date_seance)
    ->first();

请确保您从要付款的学生那里得到付款,而不是拉扯正在写表格的学生