我有这个代码:
$data = ['user'=>User::find(1)];
Mail::later(5, 'email.template', $data, function($message){
...
})
Run Code Online (Sandbox Code Playgroud)
而email.template有这样的:
print_r($user)
Run Code Online (Sandbox Code Playgroud)
当我收到电子邮件时,$ user的实例不是User对象.怎么会发生这种情况?就好像对象没有引用正确的上下文.但是当我使用Mail :: send时它工作正常.这里有点困惑.
Jos*_*ber 11
对于队列的工作来说,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) {
// ......
});
});
Run Code Online (Sandbox Code Playgroud)