**不知道大家用不用TP框架
最近呢自己手搓了一个项目,放到线上运行后报错了,记录一下!**
一.触发原因
1.使用TP的多应用模式think-multi-app
2.使用了模型中间表
二.触发代码
php
<?php
namespace app\admin\model;
use think\Model\Pivot;
class AdminRole extends Pivot
{
protected $autoWriteTimestamp = true;
protected $convertNameToCamel = true;
}
三.问题分析
1.可以看到在IDE里面composer的自动引入是可以读取到的,但是在线上就无法找到
且本地测试是可以运行起来也不会报错。
搜了很多帖子看没有大佬贴出来的,估计TP用的人不怎么多。
尝试删除缓存和依赖重新安装依赖还是不行。一开始考虑RS4规范问题,但是检查后没错。 问题甩给AI,也不好使。
2.这里主要问题是TP的命名空间是小写的model,但是正常我们在使用模型时继承的是Model,正常情况使用Model不会异常,不知道怎么回事官方也没有说明,且Model模型和Pivot都是属于TP的ORM的
3.最后问了下AI
- TP8 把 ORM 独立成了
think-orm包,Pivot类的真实文件路径是:vendor/topthink/think-orm/src/model/Pivot.php
-该文件的命名空间是namespace think\model;(小写的 model ),而不是namespace think\Model;(大写的 Model)
四.问题解决于总结
将Model改为小写的就行了
php
<?php
namespace app\admin\model;
use think\model\Pivot;
class AdminRole extends Pivot
{
protected $autoWriteTimestamp = true;
protected $convertNameToCamel = true;
}
问题原因也是我在开发时没有报错或者警告什么,代码也能正常运行 所以也没有留意,真是错一个就难搞!
写一个文章记录一下,避免下次在遇到这种低端问题。
这里贴个图吧

