2017-05-04 14 views
1

Laravelジョブクラス内からペイロードにアクセスするにはどうすればよいですか?Laravel待ちジョブのペイロードデータにアクセス

私が試してみました:

<?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が実際のジョブクラスを参照しているかどうかはわかりません。

私はLaravel 5.4を使用してRedisキュードライバを使用しています。

+0

'payload()'メソッドからどのようなことを期待していますか?通常、 'PDF'クラスで行ったように、コンストラクタを介して必要なデータを渡します。 – James

答えて

0

ことが特色InteractsWithQueuehttps://github.com/laravel/framework/blob/5.4/src/Illuminate/Queue/InteractsWithQueue.php#L57)を介して、あなたのProcessConversionクラスに追加された方法ですので、あなたが$this->release()メソッドを呼び出すことができるしている理由はある

あなたはあなたのクラスは抽象クラスを拡張持つことができるかもしれませんJobクラス(https://github.com/laravel/framework/blob/5.4/src/Illuminate/Queue/Jobs/Job.phpにアクセスして、希望するメソッドにアクセスできますが、これに関するドキュメントは見つかりません。