将 Eloquent 数据传递到邮件 Job/Queue - Lumen/Laravel

Passing Eloquent data to Mail Job/Queue - Lumen/Laravel

我正在尝试使用 eloquent 模型将数据传递到 Lumen 中的 job 队列。

我遇到错误 trying to get property of non-object

这是我的工作class

<?php

namespace App\Jobs;

use App;

class CustomerSignupEmailJob extends Job
{

    protected $getUser;

    /**
     * Create a new job instance.
     *
     * @return void
     */
    public function __construct($getUser)
    {
        $this->user = $getUser;
    }

    /**
     * Execute the job.
     *
     * @return void
     */
    public function handle()
    {
        //
        $mailer = app()->make('mailer');

        $mailer->send('emails.backend-customer-signup', ['user' => $this->getUser] , function ($message) {
            $message->from('xxx@xxx.com', 'Laravel');
            $message->to('xxx@gmail.com')->cc('xxx@yahoo.co.uk');
        });
    }
}

Mail 期望一个数组作为第二个数据

这是我的控制器代码;

$getUser = Customer::where('email', $email)->first();
$job1 = (new CustomerSignupEmailJob($getUser));
$this->dispatch($job1);

你可以看到我正在获取 Customer 作为 $getUser 并传递它。

这是我的电子邮件视图;

Customer First Name: {{$user->first_name}}
Customer Last Name: {{$user->last_name}}
Customer Email: {{$user->email}}
Customer Phone Number: {{$user->mobile_phone}}
Customer Address Line 1: {{$user->address_line1}}
Customer Address Line 2: {{$user->address_line2}}
Customer Address Line 3: {{$user->address_line3}}
Customer Location: {{$user->location_id}}
Customer City: {{$user->city_id}}

我对如何在 job class 中传递和访问数据感到困惑 任何建议表示赞赏。

在您的构造函数中更改

$this->user = $getUser 

$this->getUser = $getUser

并在处理程序中使用队列。

$mailer->queue('emails.emailtemplate', $this->getUser , function ($message) {
    $message->from('support@xxx.com', 'Laravel');

    $message->to('xxx@gmail.com')->cc('xxx@yahoo.co.uk');
});