Laravel 5.5 - 发送电子邮件 - 无法在非对象上获取属性

时间:2018-02-14 13:48:14

标签: laravel

我正试图从这样的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->电子邮件

任何想法?

2 个答案:

答案 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']);

使用正确的数组元素引用。