公司OA系統(tǒng)開發(fā)時(shí) 技術(shù)選型用了ThinkORM
ThinkORM也算是國(guó)產(chǎn)的老牌ORM了 上手門檻比較低 文檔也比較完善
一開始 公司業(yè)務(wù)數(shù)據(jù)庫(kù)只使用了Mysql 所以體驗(yàn)下來還行
后續(xù) 公司因業(yè)務(wù)調(diào)整 接入一些第三方的數(shù)據(jù)庫(kù) 如MSSQL(SQL Server)、pgsql(Postgresql)
開始發(fā)現(xiàn)一些問題:
復(fù)雜查詢場(chǎng)景 下 非Mysql驅(qū)動(dòng) 容易出各種奇奇怪怪的錯(cuò)誤(如:存儲(chǔ)過程、子查詢)
這些錯(cuò)誤在 Mysql數(shù)據(jù)庫(kù)場(chǎng)景下是遇不到的
在使用pgsql的時(shí)候 你還要去vendor 找thinkphp官方包下面的pgsql.sql 然后手動(dòng)把驅(qū)動(dòng)函數(shù)導(dǎo)入到pgsql數(shù)據(jù)庫(kù)中才能使用這個(gè)ORM驅(qū)動(dòng)(
得出結(jié)論:
ThinkORM 對(duì)Mysql支持友好 但是其它數(shù)據(jù)庫(kù)表現(xiàn)力一般 甚至差勁
如你的項(xiàng)目中可能會(huì)穿插其它類型數(shù)據(jù)庫(kù)的項(xiàng)目 請(qǐng)慎用
~~有人可能會(huì)說官方的鏈?zhǔn)胶瘮?shù)支持不好 那么你寫原生查詢不就好了
如果復(fù)雜查詢?nèi)约菏謱懥?我還要ORM做什么 不就是為了提高項(xiàng)目的可讀性 降低心智負(fù)擔(dān)?~~
后續(xù) 我改用了EloquentORM 也就是laravel的數(shù)據(jù)庫(kù)
目前整體使用下來感覺不錯(cuò) 即使在比較復(fù)雜的查詢構(gòu)筑下 也未產(chǎn)生較大影響的問題
不愧是laravel
遺憾的是 這個(gè)問題我發(fā)現(xiàn)的太晚了 我前期用thinkORM搭建了太多業(yè)務(wù)模型和服務(wù)
再想統(tǒng)一ORM將會(huì)帶來很多工作量 現(xiàn)在就是項(xiàng)目里跑兩個(gè)ORM 各自有自己的一套模型和服務(wù)層??
其實(shí)你們技術(shù)選型問題,既然都采用新技術(shù)pgsql首選用laravel的ORM。Laravel的ORM時(shí)刻都在更新,最新Tp的新版本bug太多了。我都放棄用tp框架了。