Events 如何使用laravel 5.2中的事件队列?

Events 如何使用laravel 5.2中的事件队列?,events,queue,listener,laravel-5.2,Events,Queue,Listener,Laravel 5.2,我正在使用事件删除特定信息。 我有DeleteCourseConfirmation事件侦听器和DeleteBranchCourse事件 它很好用 以下是DeleteBranchCourse事件的代码 class DeleteBranchCourse extends Event{ use SerializesModels; private $fee; private $feeId; public function __construct($fee,$feeId) { $this->

我正在使用事件删除特定信息。 我有DeleteCourseConfirmation事件侦听器和DeleteBranchCourse事件

它很好用

以下是DeleteBranchCourse事件的代码

class DeleteBranchCourse extends Event{
use SerializesModels;

private $fee;
private $feeId;
public function __construct($fee,$feeId)
{
    $this->fee=$fee;
    $this->feeId=$feeId;

}

/**
 * Get the channels the event should be broadcast on.
 *
 * @return array
 */
public function broadcastOn()
{
    return [];
}
public function deleteCourse()
{
     $this->fee->destroy($this->feeId);
}}
以下是DeleteCourseConfirmation事件侦听器的代码

class DeleteCourseConfirmation{

public function __construct()
{

}

public function handle(DeleteBranchCourse $event)
{

    $event->deleteCourse();
}}
但是当我尝试php artisan queue:listenDeleteCourseConfirmation中实现ShouldQueue接口后,将事件侦听器排队

class DeleteCourseConfirmation implements ShouldQueue{
use InteractsWithQueue;
public function __construct()
{

}

public function handle(DeleteBranchCourse $event)
{

    $event->deleteCourse();
}}
出现错误

没有模型[App\Modules\Branch\Models\Fee]的查询结果

我遵循Laravel 5.2文档排队事件侦听器

找到了解决方案

首先,我更改了事件火灾代码

Event::fire(new DeleteBranchCourse($fee,$feeId));
事件::fire(新DeleteBranchCourse($feeId))

因为我不需要将费用模型的对象发送给DeleteBranchCourse的构造函数

我把DeleteBranchCourse类改成这个

class DeleteBranchCourse extends Event{
use SerializesModels;

private $feeId;
public function __construct($feeId)
{
    $this->feeId=$feeId;
}

/**
 * Get the channels the event should be broadcast on.
 *
 * @return array
 */
public function broadcastOn()
{
    return [];
}
public function deleteCourse()
{
     Fee::destroy($this->feeId);
}}
public function handle(DeleteBranchCourse $event)
{

    $this->attempts($event->deleteCourse());
}}
最后从终端运行这个命令

php artisan queue:listen
或者将侦听器类的句柄函数更改为

class DeleteBranchCourse extends Event{
use SerializesModels;

private $feeId;
public function __construct($feeId)
{
    $this->feeId=$feeId;
}

/**
 * Get the channels the event should be broadcast on.
 *
 * @return array
 */
public function broadcastOn()
{
    return [];
}
public function deleteCourse()
{
     Fee::destroy($this->feeId);
}}
public function handle(DeleteBranchCourse $event)
{

    $this->attempts($event->deleteCourse());
}}
找到了解决办法

首先,我更改了事件火灾代码

Event::fire(new DeleteBranchCourse($fee,$feeId));
事件::fire(新DeleteBranchCourse($feeId))

因为我不需要将费用模型的对象发送给DeleteBranchCourse的构造函数

我把DeleteBranchCourse类改成这个

class DeleteBranchCourse extends Event{
use SerializesModels;

private $feeId;
public function __construct($feeId)
{
    $this->feeId=$feeId;
}

/**
 * Get the channels the event should be broadcast on.
 *
 * @return array
 */
public function broadcastOn()
{
    return [];
}
public function deleteCourse()
{
     Fee::destroy($this->feeId);
}}
public function handle(DeleteBranchCourse $event)
{

    $this->attempts($event->deleteCourse());
}}
最后从终端运行这个命令

php artisan queue:listen
或者将侦听器类的句柄函数更改为

class DeleteBranchCourse extends Event{
use SerializesModels;

private $feeId;
public function __construct($feeId)
{
    $this->feeId=$feeId;
}

/**
 * Get the channels the event should be broadcast on.
 *
 * @return array
 */
public function broadcastOn()
{
    return [];
}
public function deleteCourse()
{
     Fee::destroy($this->feeId);
}}
public function handle(DeleteBranchCourse $event)
{

    $this->attempts($event->deleteCourse());
}}

你的活动怎么样?请提供codeEvent::fire(新DeleteBranchCourse($fee,$feeId));排队的数据存储在作业表中,但尝试次数为0次。当我运行php artisan queue:listen时,它尝试了多次,但没有得到模型[App\Modules\Branch\Models\Fee]错误的查询结果。您的事件引发情况如何?请提供codeEvent::fire(新DeleteBranchCourse($fee,$feeId));排队的数据存储在作业表中,但尝试了0次。当我运行php artisan queue:listen时,它尝试了几次,但没有得到模型[App\Modules\Branch\Models\Fee]错误的查询结果