2015-11-25 1 views
1

J'utilise beanstalkd avec Laravel à la file d'attente des tâches, mais je vais avoir du mal à envoyer des données à la fonction qui gère la file d'attente, ici est mon code

//Where I call the function 

$object_st = new stdClass(); 
$object_st->Person_id = 2 ; 

//If I do this: echo($object_st->Person_id); , I get 2 

Queue::push('[email protected]_Queue_Function', $object_st); 

Et la fonction qui gère la file d'attente est la suivante

public function My_Queue_Function($Data) 
{ 
    $Person_id = $Data->Person_id; //This generate the error 

    //Other code 
} 

l'erreur dit:

[ErrorException]
Undefined property: Illuminate \ Queue \ Emploi \ BeanstalkdJob :: $ person_id

Répondre

1

Les files d'attente façon de travailler en 4.2 est différent de 5; le premier argument de la fonction qui gère la tâche de file d'attente est en fait une instance de travail de file d'attente, le deuxième argument serait vos données:

class SendEmail { 

    public function fire($job, $data) 
    { 
     // 
    } 

} 

Comme par exemple de la documentation.

Votre code renverrait à cet effet nécessité de permettre le premier argument:

public function My_Queue_Function($job, $Data) 
{ 
    $Person_id = $Data['Person_id']; 

    //Other code 
} 
+0

Dois-je garder l'appeler ainsi 'file d'attente :: push ('My_Queue_Class @ My_Queue_Function', object_st de $);' @Luceos – ikuchris

+0

oui la le premier argument est automatiquement ajouté – Luceos

+1

Merci, ça fonctionne quand j'utilise '$ Person_id = $ Data ['Person_id'];' pas '$ Person_id = $ Data-> Person_id;' Vous devriez envisager de mettre à jour votre réponse pour aider les autres dans le futur – ikuchris