Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Laravel 付款后添加培训_Laravel_Forms_Laravel 5 - Fatal编程技术网

Laravel 付款后添加培训

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

我有3个表单,第一个是表单
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();
试试看。