laravel - 使用 Laravel Mail::later 时缺少对象

标签 laravel queue

我有这个代码:

$data = ['user'=>User::find(1)];
Mail::later(5, 'email.template', $data, function($message){
  ...
})

email.template有这个:
print_r($user)

当我收到电子邮件时, $user 的实例不是 User 对象。怎么会这样?这就像对象没有引用正确的上下文。但是当我使用 Mail::send 时它工作正常。这里有点困惑。

最佳答案

Eloquent 模型对于队列的工作来说太大了,通常有 64kb 的限制。

我建议您使用常规队列作业,将您的用户 ID 传递给它,然后从那里发送电子邮件:

$user_id = 1;

Queue::later(5, function () use ($user_id) {
    $data = ['user' => User::find($user_id)];

    Mail::send('email.template', $data, function ($message) {
        // ......
    });
});

关于laravel - 使用 Laravel Mail::later 时缺少对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21299341/

相关文章:

php - 如何从 phar 文件安装 Laravel?

laravel - 更改 Laravel 8 凭证匹配验证的错误键?

php - 默认情况下,Laravel 迁移使我的所有表列不为空。如何允许某些列为空?

javascript - Vue挂载组件失败: template or render function not defined

c++ - 关于在 C++ 模板化队列中实现 put() 函数的建议?

python - Python 的通用优先级队列

c# - 如何在 C# 中使用 for 循环从队列中检索值?

laravel - VueJS + Laravel Passport CSRF Token 过期如何刷新

python - 需要验证 : Clearable Python Queue class

api - Flutter 队列 API 请求稍后执行