【问题标题】:Undefined Variable in Laravel CommandLaravel 命令中未定义的变量
【发布时间】:2015-01-11 21:12:19
【问题描述】:

我在 Laravel 命令中添加了 mail::send 以向所有符合条件的用户发送电子邮件。每当我运行我的 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');
        });
    }

}

【问题讨论】:

    标签: php laravel laravel-4


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-21
      • 2019-04-29
      • 1970-01-01
      • 2015-05-15
      • 2019-09-17
      • 2015-10-10
      相关资源
      最近更新 更多