我开发过一个内部程序使用的是golang,当时纯粹为了学习,同时公司主站用的是laravel,两个语言都用过,就ORM这块,说下我自己的感受,

golang是类型严格的语言(好像是这样说吧),同时也没有范型,还没有继承(这点实在不知道是怎么考虑的),基于这两点,golang的ORM不可能像php那样设计,更不可能做到Eloquent那样方便易用。


当然,golang有struct的组合可以当集成,但是,假设给DB结构体安装上一堆方法,

如果在User结构体组合DB结构体

调用user内的where方法实际上是调用了DB内的where方法,反射不出字段,所以,在golang的orm设计中,通常是这样做的:


使用的时候:


上面是两个语言在语言层面就造成的差异,看个人习惯,用起来都不难,golang的GORM和XORM都很好用,我做项目的时候用的是GORM。


至于类似Eloquent功能的基于golang的ORM,我找了很久,没有找到,毕竟Eloquent内有非常多的laravel支持类,比如collection类,分页类,


除去collection和分页的话,我感觉GORM基本和Eloquent类似,同样有表间关系,软删除等,当然,我的项目表间关系和软删除用的最多,其他功能关注不多,也没注意。

至于具体选哪个,你自己测试一下好了。