2017-10-25 11 views
3

私は私がここで本当にシンプルなものを逃すと思うが、私はこのようなスクリプトを持っている:ユーザ名とLaravel 5.5メールに

\Mail::to(User::all()) 
      ->send(new NotificationEmail($notification)); 

class NotificationEmail extends Mailable { 
    use Queueable, SerializesModels; 

    /** 
    * Create a new message instance. 
    * 
    * @param Notification $notification 
    * 
    */ 
    public function __construct(Notification $notification) { 
     $this->notification = $notification; 
    } 

    /** 
    * Build the message. 
    * 
    * @return $this 
    */ 
    public function build() { 
     $notification = $this->notification; 

     return $this 
      ->from([ 
       'address' => \env('MAIL_DEFAULT_SENDER'), 
       'name' => \env('APP_NAME') 
      ]) 
      ->view('email.notification.ready'); 
    } 
} 

今、私は

ようなもので開始する電子メールメッセージが欲しいです

{あなたのファーストネーム} しかし、そのメールを受け取るユーザーのファーストネームを取得する方法はわかりません。それを理解する方法はありますか?

+0

チェックドキュメントdocs/5.5/mail#view-data) – ljubadr

+0

私は持っています。私は 'User :: all();'をメールに渡しているので、単にそれをパラメータとして 'NotificationEmail'クラスに追加することはできません。醜いループを書くことなくこれを達成する方法を説明してください。 – SheperdOfFire

+0

それは良い質問です..私は確信していません – ljubadr

答えて

0

メールを受信者ので、それはすべての受信者を見ると、彼らはあなたがユーザーの名を追加してカスタマイズすることはできません同じメッセージを受け取ることができ、すべてのユーザーに電子メールを送信するための推奨方法ではありません。

各ユーザーに別々のMailableを作成し、すべてMailableをキューする必要があります。別々にすべてのユーザに電子メールを送信することは時間がかかる作業であり、作業者はバックグラウンドでキューを処理する必要があります。

$users = User::all(); 
foreach ($users as $user) { 
    Mail::to($user)->queue(new NotificationEmail($notification, $user)); 
} 

そして今、あなたは$userインスタンスを渡すことができ、かつユーザーの名がビューで提供されています:[データの表示](https://laravel.com/ため

public function __construct(Notification $notification , User $user) { 
    $this->notification = $notification; 
    $this->user = $user; 
} 

public function build() { 
    $notification = $this->notification; 

    return $this 
     ->from([ 
      'address' => \env('MAIL_DEFAULT_SENDER'), 
      'name' => \env('APP_NAME') 
     ]) 
     ->view('email.notification.ready' , [ 
      'user' => $this->user 
     ]); 
}