Laravel 付款后添加培训
我有3个表单,第一个是表单Laravel 付款后添加培训,laravel,forms,laravel-5,Laravel,Forms,Laravel 5,我有3个表单,第一个是表单students,有2个字段(name,firstname) 然后,我们有一个带有3个字段(日期编码、价格、fk学生)的表单payments 最后是最后一个表单trainings,包含3个字段(日期、fk_学生、fk_付款) 我的问题是表格培训,我可以创建一个新的记录,而无需学生付款 是否可以在培训表单中阻止包含错误消息的记录 下面是我目前的代码 public function store(Request $request) { $requ
students
,有2个字段(name,firstname)
然后,我们有一个带有3个字段(日期编码、价格、fk学生)的表单payments
最后是最后一个表单trainings
,包含3个字段(日期、fk_学生、fk_付款)
我的问题是表格培训,我可以创建一个新的记录,而无需学生付款
是否可以在培训表单中阻止包含错误消息的记录
下面是我目前的代码
public function store(Request $request)
{
$request->validate([
'date_sitting' => 'required|date',
'fk_student' => 'required',
'fk_payment' => 'required'
]);
$exists = Training::where('date_sitting', $request->get('date_sitting'))->where('fk_student', $request->get('fk_student'))->where('fk_payment', $request->get('fk_payment'))->count();
if (!$exists){
Training::create($request->all());
return redirect()->route('trainings.index')
->with('success', 'new data created successfully');
}
else{
return redirect()->route('trainings.index')
->with('error', 'duplicate');
}
}
当然-只需在创建块中添加一个if检查。如果用户没有付款,请不要创建并返回错误消息。您可以通过重定向来实现这一点,或者您甚至可以通过AJAX进行单独的检查,以查看是否有付款,类似于我在下面的
$payment
中添加的if检查
但是,为了保持简单,请继续使用以下内容:
if (!$exists){
// Is there a payment for the student trying to create a training?
$payment = Payment::where('fk_student', $request->get('fk_student'))->first()
// You may wish to add some kind of date check to see if they paid for a specific training
if(!isset($payment)){ // No payment = block creation and return error msg.
return redirect()->route('trainings.index')
->with('error', 'No Payment, no training for you!');
}
else{
Training::create($request->all());
return redirect()->route('trainings.index')
->with('success', 'new data created successfully');
}
}
谢谢你的帮助。。。但是我有一个错误消息
语法错误,意外的'if'(T_if)
??可能是如果(!isset($payment)){
?不,我忘了上面一行的first()后面有一个分号。应该是->first();
试试看。