Php 如何将数据正确发送到Mail::queue()?

Php 如何将数据正确发送到Mail::queue()?,php,laravel,laravel-4,Php,Laravel,Laravel 4,我正在尝试Mail::queue(),这就是我正在做的: 这是给我发电子邮件的班级 class Email { public static function send($user, $view, $subject) { Mail::queue($view, array('user' => $user), function($m) use ($user, $subject) { $m->to($user->email)->

我正在尝试Mail::queue(),这就是我正在做的:

这是给我发电子邮件的班级

class Email {

    public static function send($user, $view, $subject) {

        Mail::queue($view, array('user' => $user), function($m) use ($user, $subject) {
            $m->to($user->email)->subject($subject);
        });

        Log::info("Mail [$subject] sent to $user->email");

    }

}
这就是那个打电话给元帅()的人

我这样称呼它:

Email::send($user, 'site.users.emailRegistered', 'Activate your account');
这是我试图以电子邮件形式呈现的视图:

<!DOCTYPE html>
<html lang="en-US">
    <head><meta charset="utf-8"></head>
    <body>
        <h2>Hi,</h2>
        <div>
            Please, click the link to activate your account: {{ URL::route('activate', array($user->id,$user->getActivationCode())) }}
        </div>
    </body>
</html>

你好
请单击链接激活您的帐户:{{URL::route('activate',array($user->id,$user->getActivationCode())}
问题是Mail::send()工作正常,但当我使用Mail::queue()并启动marshal()时,我在日志中得到了一系列与“尝试获取非对象的属性”相关的错误行

显然,我的数据没有被正确地序列化,因为我正在向它传递一些实例化的模型,但是我如何正确地序列化它呢


我已经尝试创建一个$data数组,并将所有内容都放在上面,然后只将其传递给Mail::queue(),但没有成功。

好吧。。。不幸的是,我被迫改变了仅使用Mail::queue()的计划,但仍能正常工作,代码如下:

class Email {

    public static function queue($user, $view, $subject) {

        $userId = $user->id;

        $data = compact('userId', 'view', 'subject');

        Queue::push(function($job) use ($data) {
            $user = Sentry::getUserProvider()->findById($data['userId']);

            Email::send($user, $data['view'], $data['subject']);
        });

        Log::info("Mail [$subject] QUEUED to $user->email");

    }

    public static function send($user, $view, $subject) {

        Mail::send($view, ['user' => $user], function($m) use ($user, $subject) {
            $m->to($user->email)->subject($subject);
        });

        Log::info("Mail [$subject] SENT to $user->email");

    }

}

当然,使用Queue:later()可以对其进行改进,但由于我仍然不需要它们,所以我只是让它保持干燥。

嗨,Antonio。可能会发布一些“尝试获取非对象属性”日志,这可能有助于调试此日志。只是添加了一个工作版本。谢谢。:)
class Email {

    public static function queue($user, $view, $subject) {

        $userId = $user->id;

        $data = compact('userId', 'view', 'subject');

        Queue::push(function($job) use ($data) {
            $user = Sentry::getUserProvider()->findById($data['userId']);

            Email::send($user, $data['view'], $data['subject']);
        });

        Log::info("Mail [$subject] QUEUED to $user->email");

    }

    public static function send($user, $view, $subject) {

        Mail::send($view, ['user' => $user], function($m) use ($user, $subject) {
            $m->to($user->email)->subject($subject);
        });

        Log::info("Mail [$subject] SENT to $user->email");

    }

}