【问题标题】:Undefined property: Illuminate\Queue\Jobs\BeanstalkdJob:: $name未定义属性:Illuminate\Queue\Jobs\BeanstalkdJob:: $name
【发布时间】:2015-11-25 22:38:20
【问题描述】:

我正在使用 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
}

错误提示:

[错误异常]
未定义属性:Illuminate\Queue\Jobs\BeanstalkdJob::$Person_id

【问题讨论】:

    标签: php laravel laravel-4 task-queue beanstalkd


    【解决方案1】:

    队列在 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
    }
    

    【讨论】:

    • 我应该一直这样称呼它Queue::push('My_Queue_Class@My_Queue_Function', $object_st );@Luceos
    • 谢谢,当我使用$Person_id = $Data['Person_id']; 而不是$Person_id = $Data->Person_id; 时它可以工作您应该考虑更新您的答案,以便将来对其他人有所帮助
    猜你喜欢
    • 2016-11-23
    • 2018-11-18
    • 2021-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-11
    • 2021-01-12
    • 1970-01-01
    相关资源
    最近更新 更多