Laravel 5.1,是否可以将集合发送到Mail模板

时间:2015-12-17 19:06:55

标签: php email laravel-5.1

Mail::send('emails.mytemplate', $mymodel, function ($message) use ($email) {
      $message->from('info@mail.com', 'Info')
              ->sender('info@mail.com', 'Info')
              ->replyTo(env('MAIL_REPLY_TO', 'info@mail.com'), 'Info')
              ->to($email)
              ->subject('You have new mail');
});

给出

Argument 2 passed to Illuminate\Mail\Mailer::send() must be of the type array, object given....

由于我想要发送的数据有点复杂,我真的希望将$myModel集合发送到模板并从那里的MyModel关系中提取数据,而不是将所有数据解析为新的多级数组并将其传递给Mail::send(...);

这是正确的方法还是我应该将模型及其所有关系解析为一个新数组并继续使用?

1 个答案:

答案 0 :(得分:1)

有一种方法可以将实际对象发送到邮件模板。只需将您的逻辑更改为:

Mail::send('emails.mytemplate', ["mymodel" => $mymodel], function ($message) use ($email) {
      $message->from('info@mail.com', 'Info')
              ->sender('info@mail.com', 'Info')
              ->replyTo(env('MAIL_REPLY_TO', 'info@mail.com'), 'Info')
              ->to($email)
              ->subject('You have new mail');
});

这样,在您的emails.mytemplate.blade.php中,您仍然可以使用以下方式访问该对象的数据:

<p>My Model's name is {{ $mymodel->name }}</p>