2017-10-06 2 views
0

Ich habe eine Redisit-Warteschlange mit einem einfachen Job eingerichtet. Der Jobcode ist unten. Ich bekomme immer den folgenden Fehler -Laravel Job-Eigenschaft von Nicht-Objekt

Wenn ich diesen gleichen Code nehme und es auf meinen Controller verschiebe, funktioniert es. Aber wenn ich es hierherbewege, läuft es nicht einmal. Hier ist meine ResolveOrders.php - es scheint, wie Laravel ist nicht mein Sync Db Modell erkennen

<?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(); 


    } 


} 

Antwort

1

Der Punkt ist, dass es keine Auth :: Benutzer(), wenn der Job von der Warteschlange verarbeitet wird. Sie müssen die Benutzer-ID im Konstruktor speichern.

<?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(); 


    } 


} 
Verwandte Themen