2017-05-04 40 views
1

如何从Laravel工作班级访问有效负载?访问Laravel Queued Job的有效负载数据

我曾尝试:

<?php 

namespace App\Jobs; 

use Illuminate\Bus\Queueable; 
use Illuminate\Queue\SerializesModels; 
use Illuminate\Queue\InteractsWithQueue; 
use Illuminate\Contracts\Queue\ShouldQueue; 

use App\PDF; 

class ProcessConversion implements ShouldQueue 
{ 
    use InteractsWithQueue, Queueable, SerializesModels; 

    protected $pdf; 

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

    /** 
    * Execute the job. 
    * 
    * @return void 
    */ 
    public function handle() 
    { 

     $payload = $this->payload(); //undefined method 
     $payload = $this->payload; //undefined property 
     $payload = json_decode($this->getRawBody(), true); //undefined method 

     .... 

我这些从作业类。但payload()getRawBody()均返回Call to undefined method

其他方法from that class do work - 例如,$this->release(1),所以我不知道,如果不$this指实际的作业类。

我正在使用Redis队列驱动程序,使用Laravel 5.4。

+0

你希望从payload()方法中获得什么?通常情况下,您会通过构造函数传递作业所需的数据,就像您使用“PDF”类所做的那样。 – James

回答

0

为什么你能调用$this->release()方法,因为这是它通过性状InteractsWithQueuehttps://github.com/laravel/framework/blob/5.4/src/Illuminate/Queue/InteractsWithQueue.php#L57

您可以添加到您的ProcessConversion类,以便你的类继承抽象方法的原因Job class(https://github.com/laravel/framework/blob/5.4/src/Illuminate/Queue/Jobs/Job.php)其中可能可让您访问您希望的那些方法,但是,我无法找到关于此的任何文档。