2016-10-09 15 views
1

イベントを作成しました。アイテムが作成されると、そのアイテムの所有者に電子メールが送信されます。私はイベントとリスナーを作成しました。しかし、私はデータベースにデータを保存することができます。しかし、私はメールを取得しませんでした。私は、次のエラーを得た:Laravelイベントを使用して電子メールを送信するには?

<?php 

namespace App\Listeners; 

use App\Events\SendMail; 
use Illuminate\Queue\InteractsWithQueue; 
use Illuminate\Contracts\Queue\ShouldQueue; 
use App\Item; 
use Mail; 

class SendMailFired 
{ 

    public function __construct() 
    { 

    } 

    public function handle(SendMail $event) 
    { 
      $item = Item::find($event->id)->toArray(); 

      Mail::send('send', $item, function($message) use ($item) { 
      $message->to($item['email']); 
      $message->subject('Event Testing'); 
     }); 
    } 
} 

そして、ここではコントローラである:

FatalThrowableError in SendMailFired.php line 31: 
Call to a member function toArray() on null 

ここにここに私のイベントSendMail.php

<?php 

namespace App\Events; 

use Illuminate\Broadcasting\Channel; 
use Illuminate\Queue\SerializesModels; 
use Illuminate\Broadcasting\PrivateChannel; 
use Illuminate\Broadcasting\PresenceChannel; 
use Illuminate\Broadcasting\InteractsWithSockets; 
use Illuminate\Contracts\Broadcasting\ShouldBroadcast; 

class SendMail 
{ 
    use InteractsWithSockets, SerializesModels; 
    public $id; 


    public function __construct($id) 
    { 
     $this->id = $id; 
    } 


    public function broadcastOn() 
    { 
     return new PrivateChannel('channel-name'); 
    } 
} 

は、リスナー(SendMailFired.php)一部です部分:

public function store(Request $request) 
      { 
       $item= new Item(); 
       $item->title = $request->input(['title']); 
       $item->description=$request->input(['description']); 
       $item->email = $request->input(['email']); 
       $item->status = '0'; 
       $item->save(); 
       Event::fire(new SendMail('id')); 
       return Response::json($item); 
      } 

答えて

2

m IGHTタイプミスすることが、私は

Event::fire(new SendMail('id')); 

あなたはまた、追加のデータベース呼び出しを避けるために、イベントコンストラクタに全アイテムを渡すことができ

Event::fire(new SendMail($item->id)); 

に変更する必要があると思います。

Event::fire(new SendMail($item->toArray())); 
関連する問題