大家对于 PHP 框架中的 ORM 是什么态度

2016-06-28 10:22:11 +08:00
 yseternal

Eloquent ORM 号称 Laravel 中最慢的部分,抛开性能不讲, 大家对 ORM 的态度是怎么样的?公司内一直在用吗?

我个人一直很不喜欢 ORM ,原因有以下四点:

  1. 不是很灵活。
  2. 移植不方便。
  3. 不透明,有可能被错用。而 SQL 却比较清楚。
  4. 性能问题。

如果是 Java 的话,从 SQL 的结果转对象需要大量代码,所以用用 还行, PHP 我始终感觉没有必要。

10928 次点击
所在节点    程序员
41 条回复
500miles
2016-06-28 12:03:37 +08:00
除了第四点 性能问题, 前面三点可都是 ORM 的好处啊...

php 构建 sql, 进行 record 映射. 这部分消耗都可以忽略了..


主要的性能影响, 还是在 sql 执行部分

1. 你手写 sql 看到 "select * ...." 肯定不能忍吧?

但是 对于好多人来说, 用 ORM 时 看不到 这个 "*", 也就眼不见为净, 为了简洁, 为了优雅, 为了写的快, 也就不管了

2. 关联关系, 这个问题很难解决

你手写 sql 一句 sql 搞掂的事, 交给 ORM 最少两条

. . . . . .

但是 这些相对于 ORM 带来的好处来说, 也可以忽略了... 2333333 安心的用吧
jy01264313
2016-06-28 12:10:39 +08:00
帖一条你写的 SQL 出来看看
roys
2016-06-28 12:12:39 +08:00
@wjfz 👍
zhengkai
2016-06-28 12:37:59 +08:00
太大和太小的项目都不需要 ORM
Jakesoft
2016-06-28 12:39:46 +08:00
@b821025551b 那个 M 方法还真不是 ORM 。。。
skyworker
2016-06-28 12:49:31 +08:00
不是很灵活。

那是你不会用. Eloquent 用好 DB::raw()的话不知道有多灵活.
broadliyn
2016-06-28 13:29:31 +08:00
你所谓那点性能问题还真不是啥问题。到阿里粑粑、 twitter 、 facebook 这种量级,所谓的性能都已经钻到语言层面了。
hwsdien
2016-06-28 13:32:05 +08:00
写多了 SQL ,总有一天你自己会抽象一个 ORM 出来...
qhxin
2016-06-28 13:35:28 +08:00
很好用的
ilskenyf
2016-06-28 13:46:06 +08:00
msg7086
2016-06-28 13:48:25 +08:00
现在不写 PHP ,但是用 ORM 。
这么说吧,你手写 SQL 的时候自带了缓存机制吗?
多级关联查询的时候有缓存机制吗?
写入数据的时候带了参数绑定和类型检查吗?
更新的时候有脏数据标记吗?

啥都没有你玩啥数据库。光一个缓存机制就可以甩你手写了。

更不提移植性什么的。
darluc
2016-06-28 14:09:40 +08:00
我觉得这个问题得从工程和编程思维的方面来理解:
1. ORM 更符合面向对象思维;
2. ORM 的抽象,使得项目更加容易维护;
yannxia
2016-06-28 15:04:47 +08:00
如果不需要快速开发,另外长时间稳定数据库选择就可以不用 ORM
ilskenyf
2016-06-28 15:06:44 +08:00
推荐楼主用 phalcon
S4m
2016-06-28 15:22:45 +08:00
就一个很单纯的问题,用 ORM 几乎就不会产生 SQL 注入了。
aksoft
2016-06-28 15:33:03 +08:00
我觉得楼主不适合用框架,直接 echo sql 更好更快
jswh
2016-06-28 15:41:26 +08:00
ORM 是对数据对象的封装,用还是不用还是看你怎么设计整个框架。如果有好的封装形式不用也没问题吧。
hantsy
2016-06-28 15:53:58 +08:00
2. 移植不方便。。。

我是服了你。。。 ORM 最大的好处就是各数据库之间移植性。。。

用过 Doctrine 。。。不要太好用啊。从 Java 过来的,用 Doctrine 零曲线。
hantsy
2016-06-28 15:55:11 +08:00
@S4m 问题是现在的程序员有几个关注过安全问题。。。 SQL 直接拼接的人不要太多啊。
changwei
2016-06-28 15:59:53 +08:00
我也不喜欢用 ORM ,所以我都是直接写原生 SQL ,我觉得原生的比较直观,而且涉及到很复杂的比如说查询带有子查询, N 张表连接。
当然一些很简单的,比如说单表查询,单 where 条件,直接用 orm 代码比较少,我喜欢。
性能倒不是问题,现在 CPU 这么快,性能瓶颈已经不再代码层了,都在 IO 方面

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/288772

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX