在作业上的null中调用成员函数notify()

时间:2018-06-28 02:18:07

标签: php laravel notifications jobs

所以我在NasabahEloquent.php中有此变量用于通知。

$shohibuls = ShohibulFinance::where('barang_id','=',$submission->id)->get();

通知:

foreach($shohibuls as $sohib){
       User::find($sohib->shohibul_id)->notify(New NasabahAkadItemToInvestor($submission,$data));
}

通知运行正常。但是在将其放入发送电子邮件的作业中时,它会返回错误:

Symfony\Component\Debug\Exception\FatalThrowableError: Call to a member function notify() on null in /opt/lampp/htdocs/_pain/app/Jobs/JobForNasabahAkadItemToInvestor.php:36

这是NasabahEloquent.php上的工作分配

foreach($shohibuls as $sohib){
            $userdata = User::where('id',$sohib->shohibul_id)->get();
            $AkadEndJob = (new JobForNasabahAkadItemToInvestor($userdata,$submission))->delay(Carbon::now()->addSeconds(2));
            dispatch($AkadEndJob);
        }

这是错误来自JobForNasabahAkadItemToInvestor.php的句柄和第36行

public function handle()
{       
    $this->userdata->notify(New NasabahAkadItemToInvestorMail($this->submission));
}

为什么我的工作的用户变量中没有空值?

编辑:JobForNasabahAkadItemToInvestor.php文件

<?php

namespace App\Jobs;

use Illuminate\Bus\Queueable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use App\Notifications\NasabahAkadItemToInvestorMail;

class JobForNasabahAkadItemToInvestor implements ShouldQueue
{
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
    private $userdata;
    private $submission;

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

    /**
     * Execute the job.
     *
     * @return void
     */
    public function handle()
    {       
        //nda tau lagi dah
        //FIXME:Symfony\Component\Debug\Exception\FatalThrowableError: Call to a member function notify() on null in /opt/lampp/htdocs/_pain/app/Jobs/JobForNasabahAkadItemToInvestor.php:36
        $this->userdata->notify(New NasabahAkadItemToInvestorMail($this->submission));
    }
}

1 个答案:

答案 0 :(得分:0)

__construct中,您以错误的方式访问属性。

$this->$userdata = $userdata;
$this->$submission = $submission;

应该是:

$this->userdata = $userdata;
$this->submission = $submission;

请注意多余的$符号。我认为这就是导致问题的原因。