2014-11-29 3 views
0

Я добавил в сообщение команды Laravel :: отправить отправить электронное письмо всем пользователям, отвечающим критериям. Всякий раз, когда я запускаю первую часть своего заявления foreach, но дает мне [ErrorException] Undefined Variable: member всякий раз, когда он попадает на электронную почту. Ниже приведен код функции пожара.Неопределенная переменная в команде Laravel

public function fire() 
{ 
    $members = Member::where('expire', '=', Carbon::now()->today()); 

    $this->info('We found ' . $members->count() . ' expiring today (' . Carbon::now()->today() . ')!'); 

    foreach ($members->get() as $member) { 
     $member->active = "0"; 
     $member->save(); 
     $this->comment($member->first_name . ' has been updated.'); //This is the last line which runs 

     Mail::send('emails.member.membership_expired', array('name'=>$member->first_name. ' ' . $member->last_name), function($message){ 
      $message->to($member->email, $member->first_name . ' ' . $member->last_name)->subject('Your Membership has Expired'); 
     }); 
    } 

} 

ответ

3

С Mail::send вы используете closure (называемый также анонимные функции). Чтобы использовать локальные переменные внутри закрытия, вы должны передать их с помощью use. Например:

Mail::send('emails.member.membership_expired', 
    array('name'=>$member->first_name. ' ' . $member->last_name), 
    function($message) use ($member){ 
     $message->to($member->email, $member->first_name . ' ' . $member->last_name)->subject('Your Membership has Expired'); 
    } 
);