拉拉维尔命令中的未定义变量


Undefined Variable in Laravel Command

我已经添加到Laravel命令mail::end中,以向所有符合条件的用户发送电子邮件。每当我运行foreach语句的第一部分时,但每当它到达电子邮件时都会给我一个[ErrorException] Undefined Variable: member。我的火函数代码如下。

    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');
        });
    }
}

使用Mail::send,您可以使用闭包(也称为匿名函数)。要在闭包中使用局部变量,您必须使用 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');
    }
);