我正试图从这样的Laravel 5.5控制器发送电子邮件......
$user = User::find(1)->toArray();
Mail::send('emails.invite', $user, function($message) use ($user) {
$message->to($user->email);
$message->from('me@example.com');
$message->subject('Test Subject');
});
此操作因错误而失败...
"message": "Trying to get property of non-object",
如果我将数组回显到主题中,我可以看到我确实有正确的$用户可用,但由于某种原因,当我尝试提取$ user->电子邮件
任何想法?
答案 0 :(得分:3)
您正在->toArray()
对象上调用User
,因此它不再是对象!
$user = User::find(1); // Assuming you are already protecting yourself from potentially not finding a user
$viewData = $user->toArray(); // Or better still don't expose the underlying structure
Mail::send('emails.invite', $viewData, function($message) use ($user) {
$message->to($user->email);
$message->from('me@example.com');
$message->subject('Test Subject');
});
答案 1 :(得分:1)
您的$user
类型为array
而不是object
,因为toArray()
已调用退回的模型。更改该行并删除所述toArray()
以保持其未更改的对象,或者创建此行:
$message->to($user->email);
看起来更像:
$message->to($user['email']);
使用正确的数组元素引用。