2016-01-09 1 views
2

Erreur: Argument manquant 1 pour App \ Jobs \ ReorderDatabase :: handle() montre, Je dois passer la variable du contrôleur et je n'ai pas besoin d'utiliser le modèle, alors comment je devrais procéder.classe de travail n'accepte pas l'argument envoyer du contrôleur dans laravel

Mon code de la fonction de contrôleur est ici

public function postData(Request $request) 
    { 

    $updateRecordsArray = Input::get('order'); 

    $this->dispatch(new ReorderDatabase($updateRecordsArray)); 

    return Response::json('Okay'); 
    } 

Mon travail code de travail de RecorderDatabase est

<?php namespace App\Jobs; 
use App\Http\Requests\Request; 
use App\Jobs\Job; 
use Illuminate\Queue\SerializesModels; 
use Illuminate\Queue\InteractsWithQueue; 
use Illuminate\Contracts\Queue\ShouldQueue; 
use Illuminate\Support\Facades\DB; 
use Illuminate\Support\Facades\Log; 
use App\Http\Controllers\DragDropController; 

/** 
* Class ReorderDatabase 
* @package App\Jobs 
*/ 
class ReorderDatabase extends Job implements ShouldQueue 
{ 
use InteractsWithQueue, SerializesModels; 

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

/** 
* Execute the job. 
* 
* @return void 
*/ 
public function handle($updateRecordsArray) 
{ 
    $i = 1; 

    foreach ($updateRecordsArray as $recordID) { 


     DB::table('venues')->where('id', '=', $recordID)->update(array('priority' => $i)); 

     $i++; 
    } 
    } 
    } 
+0

vous n'êtes pas de passage ce tableau comme argument l'expédition, il est un argument au constructeur du travail que vous créez une nouvelle instance de. – lagbox

+0

Je ne comprends pas comment le faire, pouvez-vous s'il vous plaît expliquer – Vikash

Répondre

4

Comme @lagbox mentionné, vous devez passer cet argument dans le constructeur et non la méthode handle.

Votre catégorie d'emplois devrait ressembler à ceci:

<?php namespace App\Jobs; 
use App\Http\Requests\Request; 
use App\Jobs\Job; 
use Illuminate\Queue\SerializesModels; 
use Illuminate\Queue\InteractsWithQueue; 
use Illuminate\Contracts\Queue\ShouldQueue; 
use Illuminate\Support\Facades\DB; 
use Illuminate\Support\Facades\Log; 
use App\Http\Controllers\DragDropController; 

/** 
* Class ReorderDatabase 
* @package App\Jobs 
*/ 
class ReorderDatabase extends Job implements ShouldQueue 
{ 
use InteractsWithQueue, SerializesModels; 

protected $updateRecordsArray; 

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

/** 
* Execute the job. 
* 
* @return void 
*/ 
public function handle() 
{ 
    $i = 1; 

    foreach ($this->updateRecordsArray as $recordID) { 


     DB::table('venues')->where('id', '=', $recordID)->update(array('priority' => $i)); 

     $i++; 
    } 
    } 
    } 
+0

quand je cours la file d'attente: écouter, son montrant l'erreur argument invalide fourni pour foreach – Vikash

+0

@Vikash Vous pouvez alors changer '$ updateRecordsArray = Input :: get ('commander '); 'dans' $ updateRecordsArray = (array) Entrée :: get (' order '); ' –

+0

Nabialek remercie beaucoup, m'a cogné la tête depuis 20 heures, en manque de connaissances de base, merci beaucoup, j'apprécie pour l'aide de choses même basiques. – Vikash