Class 'App\Models\Order' not found 异常导致无法执行 job

执行php artisan queue:work 后,抛出了异常:

local.ERROR: Class 'App\Models\Order' not found {"exception":"[object] (Symfony\\Component\\Debug\\Exception\\FatalThrowableError(code: 0): Class 'App\\Models\\Order' not found at 

但是,我的Order这个模型的命名空间是:use App\Models\Mall\Order; 而且模型的应用并没有写错,全局查找,也找不到任何地方有用 'App\Models\Order',请问这个queue是不支持将模型放在文件夹下吗??

《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
leo
最佳答案

@wesen 那就说明还有其他地方引用了

5年前 评论
讨论数量: 14
leo

没有按照课程写的代码我没法解答,因为我不知道你改了哪些东西。

5年前 评论

@leo 老师,仅仅只是移动了Order模型的位置,将它放到了App\Models\Mall\ 目录下。刚才测试了,将Order 复制了一份放到App\Models\ 目录下,再执行queue:work closeOrder执行成功。

我只是想确认,仅仅是模型的目录调整,怎么会无法执行成功?

5年前 评论
leo

@wesen 因为别的类会使用 App\Models\Order 类啊,比如 App\Models\OrderItem

5年前 评论

@Achais 改了,已经改成App\Models\Mall\Order

后面我测试了,只是单纯的将App\Models\Mall\Order 拷贝到App\Models\下,执行可以成功。

就是觉得非常奇怪。我也清理了缓存,但是还是报找不到App\Models\Order

5年前 评论

@leo 再三确认,所有可能用到Order模型的地方,已全部修改成App\Models\Mall\Order

而且,在CloseOrder 中,我依然是use App\Models\Mall\Order; 只要App\Models\Order.php 存在,就能执行成功CloseOrder

5年前 评论
leo

@wesen composer dumpautoload 然后再试试看

5年前 评论

file
模型里的命名空间你改了吗??

5年前 评论

@doobi 已经改了,其他地方用的都是App\Models\Mall\Order,这个问题非常奇怪。暂时找不到解决方案。暂时在App\Models\下也放了一份Order.php,将就着用,等查到相关问题再说。

5年前 评论

@leo 老师,试了,失败了。真是个奇怪的问题,先暂时在App\Models\下也放了一份Order.php,将就着用,等查到相关问题再说吧。

5年前 评论
leo

@wesen 那就说明还有其他地方引用了

5年前 评论
xianyunyehe

你文件移动啦。但是命名空间 没有改吧
有没有把你定义的命名空间改掉呢

<?php
namespace App\Models\Mall
class Order {}
5年前 评论

@xianyunyehe 确定是改了命名空间的。

5年前 评论

@leo 可能吧,全局搜索也没搜索到有引用的,只能看后面能否找到了……

5年前 评论
huayu_yuan

我也出现了这个问题,后来发现是User类名前加了难以识别的字符,去掉后就好了,我用的是phpstorm,也可能是在用命令移动文件时类名出问题了吧

4年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!