2017-10-06 5 views
0

간단한 작업으로 redis 큐를 설정했습니다. 작업 코드는 다음과 같습니다. 다음 오류가 계속 발생합니다. -Laravel Job Property of Non Object

ErrorException: Trying to get property of non-object in /app/Jobs/ResolveOrders.php:42 

이 코드를 가져 와서 내 컨트롤러로 옮기면 계속 작동합니다. 그러나, 내가 그것을 여기에 움직일 때 그것은 심지어 달리지 않는다. 여기 내 ResolveOrders.php입니다 - Laravel 내 동기화 DB 모델을 인식하지 못합니다처럼은

<?php 

namespace App\Jobs; 

use Illuminate\Support\Facades\Auth; 
use App\Sync; 
use App\Helpers\getOrdersHelpers; 
use Carbon\Carbon; 
use Illuminate\Bus\Queueable; 
use Illuminate\Queue\SerializesModels; 
use Illuminate\Queue\InteractsWithQueue; 
use Illuminate\Contracts\Queue\ShouldQueue; 
use Illuminate\Foundation\Bus\Dispatchable; 



class ResolveOrders implements ShouldQueue 
{ 
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels; 

    public $tries = 1; 

    public $timeout = 660; 

    /** 
    * Create a new job instance. 
    * 
    * @return void 
    */ 
    public function __construct() 
    { 

    } 

    /** 
    * Execute the job. 
    * 
    * @return void 
    */ 
    public function handle() 
    { 
     $job = Sync::create(['user_id' => Auth::user()->id, 
        'last_updated_date' => Carbon::now(), 
        'status' => 'running']); 

     $getOrdersHelpers = new getOrdersHelpers(); 
     $return = $getOrdersHelpers->getOrders(1, $job); 
     $pageNum = $return[0]; 
     $totalPages = $return[1]; 

     if ($totalPages > $pageNum) { 
      while ($pageNum <= $totalPages) { 
       $getOrdersHelpers->getOrders($pageNum, $job); 
       $pageNum++; 
      } 
     } 

      $job->status = "complete"; 
     $job->save(); 


    } 


} 

답변

1

포인트가 작업이 대기열에 의해 처리됩니다에는 인증 : 사용자()이 없도록 것 같다. 생성자에 사용자 ID를 저장해야합니다.

<?php 

namespace App\Jobs; 

use Illuminate\Support\Facades\Auth; 
use App\Sync; 
use App\Helpers\getOrdersHelpers; 
use Carbon\Carbon; 
use Illuminate\Bus\Queueable; 
use Illuminate\Queue\SerializesModels; 
use Illuminate\Queue\InteractsWithQueue; 
use Illuminate\Contracts\Queue\ShouldQueue; 
use Illuminate\Foundation\Bus\Dispatchable; 



class ResolveOrders implements ShouldQueue 
{ 
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels; 

    public $tries = 1; 

    public $timeout = 660; 

    protected $user_id; 

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

    /** 
    * Execute the job. 
    * 
    * @return void 
    */ 
    public function handle() 
    { 
     $job = Sync::create(['user_id' => $this->user_id, 
        'last_updated_date' => Carbon::now(), 
        'status' => 'running']); 

     $getOrdersHelpers = new getOrdersHelpers(); 
     $return = $getOrdersHelpers->getOrders(1, $job); 
     $pageNum = $return[0]; 
     $totalPages = $return[1]; 

     if ($totalPages > $pageNum) { 
      while ($pageNum <= $totalPages) { 
       $getOrdersHelpers->getOrders($pageNum, $job); 
       $pageNum++; 
      } 
     } 

      $job->status = "complete"; 
     $job->save(); 


    } 


}