在Laravel中找不到ID错误的可排队实体App \ Setting

时间:2016-03-24 12:03:38

标签: laravel queue

我正在尝试使用laravel 5.1queues中发送电子邮件。在终端上运行queue listen命令时,

php artisan queue:listen

在终端上显示以下错误

[Illuminate\Contracts\Queue\EntityNotFoundException]  
Queueable entity [App\Setting] not found for ID [].

jobs表的值不是进程。任何的想法 ?

如何处理我的队列?

2 个答案:

答案 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)

原来,这是因为队列中添加了一个模型,该模型已被删除。