非Mysql数据库 慎用ThinkORM

guchen

公司OA系统开发时 技术选型用了ThinkORM

ThinkORM也算是国产的老牌ORM了 上手门槛比较低 文档也比较完善

一开始 公司业务数据库只使用了Mysql 所以体验下来还行

后续 公司因业务调整 接入一些第三方的数据库 如MSSQL(SQL Server)、pgsql(Postgresql)

开始发现一些问题:

复杂查询场景 下 非Mysql驱动 容易出各种奇奇怪怪的错误(如:存储过程、子查询)
这些错误在 Mysql数据库场景下是遇不到的

在使用pgsql的时候 你还要去vendor 找thinkphp官方包下面的pgsql.sql 然后手动把驱动函数导入到pgsql数据库中才能使用这个ORM驱动(

得出结论:

ThinkORM 对Mysql支持友好 但是其它数据库表现力一般 甚至差劲

如你的项目中可能会穿插其它类型数据库的项目 请慎用

~~有人可能会说官方的链式函数支持不好 那么你写原生查询不就好了
如果复杂查询全自己手写了 我还要ORM做什么 不就是为了提高项目的可读性 降低心智负担?~~

后续 我改用了EloquentORM 也就是laravel的数据库
目前整体使用下来感觉不错 即使在比较复杂的查询构筑下 也未产生较大影响的问题

不愧是laravel

遗憾的是 这个问题我发现的太晚了 我前期用thinkORM搭建了太多业务模型和服务

再想统一ORM将会带来很多工作量 现在就是项目里跑两个ORM 各自有自己的一套模型和服务层😩

53 1 0
1个评论

故人重来

其实你们技术选型问题,既然都采用新技术pgsql首选用laravel的ORM。Laravel的ORM时刻都在更新,最新Tp的新版本bug太多了。我都放弃用tp框架了。

  • guchen 5小时前

    因为以前公司数据库只有MySQL

  • guchen 5小时前

    后面公司买了一些系统做接入(无接口,直接开数据库

guchen

420
积分
0
获赞数
0
粉丝数
2023-06-09 加入
×
🔝