第一门开发语言是 PHP ,尤为喜欢 Laravel 里面的 ORM , 后来学了 Go ( sqlx ),反而觉得 ORM 这种东西没啥用处,还不如手写 SQL 来得快和直观。
现在写回 PHP ,都是直接 PDO 了。
1
so1n 2022-09-06 10:14:02 +08:00
写了几年一直不习惯 ORM
|
2
wangkun025 2022-09-06 10:14:52 +08:00 6
写 Ruby 就会觉得 ORM 爽了。
|
3
amirobotics 2022-09-06 10:15:43 +08:00
十字螺丝能够被扁平螺丝起子开启,但扁平螺丝不能被十字螺丝起子开启。
就是一个工具,能快速完成任务才是真理。 |
4
lululau 2022-09-06 10:18:33 +08:00 15
最烦“就是个工具”这句话了,什么东西不是工具,都是工具咋不用汇编写呢
|
5
hefish 2022-09-06 10:19:11 +08:00
我怎么觉着 EloquentORM 挺爽的,是我碰到的最合适的 PHP 的 ORM 了。
主要是以对象的方式存取数据方便,如果只是取部分字段之类的,那确实 PDO 更直接,省事。 |
6
micean 2022-09-06 10:21:21 +08:00
orm 很适合写后台查询
|
7
charlie21 2022-09-06 10:26:43 +08:00
orm 是方便使用不同数据库 比如 开发环境数据库 sqlite 生产环境用 mysql 这个时候有 orm 最简单 抹平 /让人不必再关心各个数据库差异
|
8
wonderfulcxm 2022-09-06 10:30:13 +08:00 via iPhone
我一直觉得手写 SQL 不麻烦,但很多框架都用 orm ,那就用呗。
|
9
lp7631010 2022-09-06 10:31:38 +08:00
发明锄头 未必还用石块和木棍去刨土 刨的有感觉些?
|
10
daimubai 2022-09-06 10:34:15 +08:00 2
没有做过数据报表吗?十几个表一起查的那种
|
11
wakaka 2022-09-06 10:46:16 +08:00
Go 语言写 CRUD 过于繁琐无趣
|
12
www5070504 2022-09-06 10:52:28 +08:00 1
go 写 web 略显无趣 写 curd 更无聊
|
13
Dogtler 2022-09-06 10:58:53 +08:00
Go 写 CURD 是真不如 PHP 。
得找点并发场景,否则算不上熟练掌握 Go |
14
ipwx 2022-09-06 11:03:52 +08:00
ummm 现代语言的 ORM 不都能联通 API 请求解析 + 类型校验嘛。。。
结构体一复杂,手动处理这些都很麻烦。 |
15
ihipop 2022-09-06 11:07:27 +08:00 via Android 5
这是因为 go (部分是语言层面限制)没有和 eloquentorm 一样好用的 ORM
我也写 go ,但是没有冒犯的意思,这就好像和太监没有了性器官一样,说还是清心寡欲对身体好啊一样的。 |
16
tianyou666shen 2022-09-06 11:21:13 +08:00
只要不写一条占满整个屏幕的 sql 一把梭都是挺快的
|
17
lambdaq 2022-09-06 11:21:19 +08:00 4
觉得 CURD 没用的,肯定是业务不够复杂
比如传入参数 a 要生根据值成不同的语句,传入 b 要根据 a 的值联动生成不同的查询。 拼 sql 不拼死你。一堆 if else 。。。 |
18
fiypig 2022-09-06 11:24:49 +08:00
我用 GORM 也够用啊
|
19
QlanQ 2022-09-06 12:48:49 +08:00
那只是因为 go 的 orm 不好用罢了,orm 如果需要增加 软删除,只需要 在 模型里面加一个定义就好了,手撸的,你所有的相关 sql 都要检查一遍,临时增加事件也很好用
|
20
hwv2e 2022-09-06 13:44:20 +08:00 via Android
go 里面 gorm 的确很难用。
但 go 也有好用的 orm ,ent 了解一下,Facebook 开源的,超级好用,任何 sql 语句都不用写(连条件也不需要写 sql )。 |
22
xz410236056 2022-09-06 14:12:23 +08:00
1 、写 sql 不怕写错吗?
2 、你有没有想过,ORM 的代码大多都是自动生成的? |
23
anzu 2022-09-06 14:27:54 +08:00
喜欢手写 sql 是吧,什么时候表加字段、改字段名、改字段类型的时候……
|
25
YUyu101 2022-09-06 15:53:24 +08:00 1
手写 sql ,然后碰到根据参数查不同表不同字段的情况下,字符串拼接会很蛋疼,最后不得不造一套 dsl 出来。
|
26
fyooo 2022-09-06 16:04:29 +08:00
ent +1
|
28
arvin01 2022-09-06 17:06:49 +08:00
ent +1
|
29
wdwwtzy 2022-09-06 17:26:09 +08:00
其实 orm 还有一个很重要的作用,就是在编译期发现问题,你写 sql 只能在运行时才发现问题
|
30
nosugar 2022-09-06 17:54:14 +08:00
ORM 好用,大几十张表你就知道了,写 SQL 改起来很麻烦
|
31
maotao456 OP @wdwwtzy 我说一下我的体验,ORM 不能消除 SQL 错误,但是手写 SQL 可以先在 Mysql 客户端里面执行了再复制到代码里面,相当于直接调试。 ORM 则是你要程序跑起来才知道写得对不对。
|
33
maotao456 OP @lambdaq if else 是不能消除的,用不用 ORM 都一样(可能我用过的不好), 以一个管理后台为例子:
if (isset($request->name)) { $orm->where('name', $request->name); } 这样的 if 是无法消除的。 |
34
maotao456 OP @xz410236056 SQL 错没错,直接在客户端执行一下就知道了。这不是来得更快吗?
|
35
maotao456 OP @YUyu101 这个我承认,不过我现在的做法就是多表联查的聚合数据都用 搜索引擎来替代。也就是管理后台的大部分数据都用搜索引擎来做, 自己写一段不用 SQL 的方法同步数据就好了。
|
36
abcd191898105 2022-09-06 19:15:08 +08:00 via iPhone
orm 的在于规范,直接写 sql 格局太小。php 弱类型当然无所谓。
|
37
wdwwtzy 2022-09-06 19:46:31 +08:00
@maotao456 不是啊,ORM 编译期就发现错误了啊,例如你 sql 改其他代码时不小心多加了一个字母 "select * from studenta",你是不知道错误的,只有运行时才能发现,但是 orm 就可以在编译器发现了 db.student.select(),你多加个字母是编译不过的。
|
38
dobelee 2022-09-06 20:02:13 +08:00 via iPhone
where 多的话还是 orm 比较简单。如果是用户端相对简单、稳定的查询,sql 就够了。
|
39
Biexl 2022-09-06 22:46:37 +08:00
|