Laravel 队列事件未序列化模型

Laravel queue event not serializing models

不确定我是否做错了什么,但是当尝试广播事件时,SerializesModels 只序列化我抛给它的第一个模型。

class WorkerQueueEvent implements ShouldBroadcast
{
  use Dispatchable, InteractsWithSockets, SerializesModels;

  protected $user;
  public $queue;
  public function __construct(User $user,QueueJob $queue)
  {
    $this->user = $user;
    $this->queue = $queue;
  }
  public function broadcastOn()
  {    
    return new PrivateChannel('Queues/' . $this->user->id);
  }
}

这导致队列永远不会被处理。 如果我在构造函数中执行 dd($queue);dd($user);,它会同时记录它们,但它永远不会到达 broadcastOn();

我确实让它工作了,传递了 QueueJob id 并在广播功能上获取它,只是问我是否做错了什么或者这实际上是一个错误。

对于运行宁队列你必须运行php artisan queue:work

为此还要确保驱动程序是 database 您可以将其设置为您的 .env 文件。

希望对您有所帮助

我认为问题出在您的 public $queue 属性.

The documentation 说明您可以通过定义 $broadcastQueue 属性 来指定事件队列。但是,它没有提到如果未定义 $broadcastQueue,它还会检查 $queue 属性。

由于您定义了 $queue 属性,它将尝试将您的事件推送到由 QueueJob 模型实例的 __toString() 值命名的队列中,我假设它不存在以及为什么你的工作永远不会发送到队列。

如果您将 属性 重命名为 $queueJob 之类的名称,那么我相信它应该适合您。