未定义 属性: Illuminate\Queue\Jobs\BeanstalkdJob:: $name

Undefined property: Illuminate\Queue\Jobs\BeanstalkdJob:: $name

我正在使用 beanstalkdLaravel 对一些任务进行排队,但我无法将数据发送到处理队列的函数,这是我的代码

//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('My_Queue_Class@My_Queue_Function', $object_st );

处理队列的函数如下

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

    //Other code
}

错误说:

[ErrorException]
Undefined property: Illuminate\Queue\Jobs\BeanstalkdJob::$Person_id

队列在 4.2 中的工作方式与 5 不同;处理队列任务的函数中的第一个参数实际上是一个队列作业实例,第二个参数将是您的数据:

class SendEmail {

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

}

根据 documentation 中的示例。

因此您的代码需要允许第一个参数:

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

    //Other code
}