【问题标题】:Queue::push error - laravel队列::推送错误 - laravel
【发布时间】:2018-06-02 05:11:50
【问题描述】:

我在我的 laravel 项目中的 web.php 中有此代码:

 Route::get('/', function () {
    Queue::push(function(){
        Log::info('12');
        return 'done';
    });
});

但是当我向http://localhost:8000/发送请求时我有一个错误

Closure object cannot have properties

我试过这样但我有同样的错误:

 Route::get('/', function () {
    Queue::push(function($job){
        Log::info('12');
        return 'done';
        $job->delete();
    });
});

Laravel 版本是:5.6

【问题讨论】:

  • 我很确定这里不再支持使用闭包。您是否有一些指向以这种方式使用的文档的链接?

标签: php laravel laravel-5 queue laravel-queue


【解决方案1】:

我认为你的代码中有错字,请确保这不是问题:

Route::get('/', function () {
Queue::push(function($job){
    Log::info('12');
    return 'done';
    $job->delete();
});
 });

$hob 替换为$job

【讨论】:

  • 我有同样的错误。错误不是来自滚刀或工作!我以其他方式使用但我有同样的错误
  • 好的,你不应该将属性放在函数中,而是将其作为第二个参数传递
  • 我没有通过参数!
  • 您必须将参数作为第二个参数传递,例如 Queue::push(function(){},$job);
【解决方案2】:

您可能不允许在 Queue::push 内传递闭包。

你需要像这样传递 Job 类:

Queue::push(MyNewJob::class, $data);

MyNewJob应该是这样的:

class MyNewJob implements ShouldQueue
{
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;

    public function handle()
    {
       Log::info('12');
    }
}

【讨论】:

  • 你确定吗?太奇怪了,因为我的代码中没有闭包!
  • 让我再试一次
  • 我知道你来自伊朗。如果您愿意,可以通过我的电报@holykamix 与我联系
猜你喜欢
  • 1970-01-01
  • 2019-07-03
  • 2017-07-16
  • 1970-01-01
  • 2015-12-19
  • 1970-01-01
  • 1970-01-01
  • 2017-12-11
  • 1970-01-01
相关资源
最近更新 更多