ThinkPHP 8 报错"think\model\pivot" not found

**不知道大家用不用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;
}

问题原因也是我在开发时没有报错或者警告什么,代码也能正常运行 所以也没有留意,真是错一个就难搞!

写一个文章记录一下,避免下次在遇到这种低端问题。

这里贴个图吧

相关推荐
实名上网宋凯宣7 小时前
Django
后端·python·django
利威尔xu8 小时前
Go IM 源码实战(14):本地缓存快 3000 倍,失效却难 10 倍
后端·缓存·微服务·面试·golang
逃逸线LOF9 小时前
Ribbon负载均衡原理(Irule组件、源码分析)
后端·spring cloud·ribbon
慢云智慧空间9 小时前
从设备智能到空间理解,空间智能终端解决方案商如何重新定义行业标准
后端
利威尔xu9 小时前
Go IM 源码实战(13):30 个会话只有 2 个红点,未读数错在三条路径
redis·后端·微服务·面试·golang
薛定谔的猫-菜鸟程序员10 小时前
软件架构设计师开发资料大全(从入门到精通)
后端·python·系统架构·flask·架构设计师
IT_陈寒12 小时前
SpringBoot多环境配置把我坑惨了,这个踩坑经验你最好看看
前端·人工智能·后端
码事漫谈12 小时前
DeepSeek 搞了个 "Super-agent",但不是超级智能
后端
吴凡wudianmei12 小时前
从 0 搭一个 AI Agent(四):SSE 跑通之后,三处“契约错配”与它们的修复边界
前端·后端·aigc
小兔子12 小时前
defer 的参数在写下那一刻就求值了,循环里这样写会踩坑
后端