通过邮件发送机票预订

时间:2019-11-14 10:57:30

标签: php laravel

保存票证后,我需要向用户发送电子邮件,任何潜在客户我该怎么做? 这是我的商店功能

     // Create Ticket

      $ticket=new Ticket;
      $ticket->userName= $request->input('userName');
      $ticket->userEmail= $request->input('userEmail');
      $ticket->phoneNumber= $request->input('phoneNumber');
      $ticket->regular_quantity= $request->input('regular_quantity');
      $ticket->vip_quantity= $request->input('vip_quantity');
      $ticket->event_id=$request->route('id');
      $ticket->total= $request->input('regular_quantity') + $request->input('vip_quantity');


      $event = Event::find($ticket->event_id);
      if ($ticket->regular_quantity < $event->regular_attendies && $ticket->vip_quantity < $event->vip_attendies) {
          if($event->regular_attendies>0 && $event->vip_attendies>0){
        DB::table('events')->decrement('regular_attendies', $ticket->regular_quantity);
        DB::table('events')->decrement('vip_attendies', $ticket->vip_quantity);

         Mail::send('emails.booking-enquiry', compact('request', 'user', 'data'), function($message) use ($request, $user, $data){
        $message->from('matildamariwa3@@gmail.com');
        $message->to($ticket->email);
        $message->subject('Booking Enquiry');
    });

        $ticket->save();

    }
    }


       else{
          echo"no available space";
       } 
       return redirect('/');
    }

预订后,我需要发送电子邮件进行确认

2 个答案:

答案 0 :(得分:0)

如果使用-> create()而不是-> save(),您将获得刚刚创建的票证模型的实例。然后,您可以在$ ticket-> create();

之后再写一封邮件

答案 1 :(得分:0)

第一个$ticket->save();应该在您发送邮件之前。然后,只有您应该向用户发送邮件。如果保存失败,用户会收到一封邮件,说明用户预订成功。但是另一方面,DB没有记录。

发送邮件的最佳方法是创建Event Listener。您可以找到this example which I found best among all the sites

只需调度event(new EventClass($event));,即可在Listener上处理其余的事务,并且一切正常。