我正在尝试使用laravel 5.1
在queues
中发送电子邮件。在终端上运行queue listen命令时,
php artisan queue:listen
在终端上显示以下错误
[Illuminate\Contracts\Queue\EntityNotFoundException]
Queueable entity [App\Setting] not found for ID [].
jobs
表的值不是进程。任何的想法 ?
如何处理我的队列?
答案 0 :(得分:1)
我知道这个问题已经有几个月了,但我想在遇到同样的错误信息的同时添加对我的观察。这是由于EventListener(此示例中为ShouldQueue的接口为异步)无法正确解析因变量(超出范围或未包含在通过EventListener的句柄(Event $ event)方法传递的Event对象的范围内)
对我来说,当我将代码放在EventListener中的__construct块中时,会触发此错误:
public function __construct(Event $event)
{
$localProperty = $event->property
Mail::queue(etc...);
}
public function handle()
{
// Yeah I left this blank... whoops
}
相反,EventListener的handle()方法采用Event接口,并在调用时处理队列中的作业:
在活动中:
public function __construct(Object $ticket, AnotherObject $user)
{
$this->ticket = $ticket;
$this->user = $user;
}
在事件监听器中
class SomeEventListener implements ShouldQueue
{
use InteractsWithQueue;
use SerializesModels;
public function __construct()
{
// Leave me blank!
}
public function handle(Event $event)
{
$someArray = [
'ticket' = $event->ticket,
'user' = $event->user,
];
Mail::queue('some.view', $someArray, function($email) use ($someArray) {
// Do your code here
});
}
}
虽然有点迟了,但我希望这对某人有所帮助。队列类似于事件(除了乔布斯是队列背后的主要驱动力),因此大部分都应该是相关的。
答案 1 :(得分:1)
原来,这是因为队列中添加了一个模型,该模型已被删除。