Events 如何使用laravel 5.2中的事件队列?
我正在使用事件删除特定信息。 我有DeleteCourseConfirmation事件侦听器和DeleteBranchCourse事件 它很好用 以下是DeleteBranchCourse事件的代码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->
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:listen在DeleteCourseConfirmation中实现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]错误的查询结果