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

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

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

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

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

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

10935 次点击
所在节点    程序员
41 条回复
wesley
2016-06-28 10:24:27 +08:00
你列的 4 条只有第 4 条存在, 其他的都不正确
pony279
2016-06-28 10:26:29 +08:00
代码漂亮
除此以外没什么卵用
jarlyyn
2016-06-28 10:31:10 +08:00
用。

不用难道直接写 sql 么。

个人觉得,性能可以靠缓存和硬件来提升,而且对于大部分项目来说性能并不是最重要的点。

可维护性大部分情况下更重要点。
kideny
2016-06-28 10:33:51 +08:00
大冬天穿裙子,美丽冻人。
是这个意思嘛?
tabris17
2016-06-28 10:36:04 +08:00
新手写 sql 太容易出事了,所以还是 ORM 让人安心些,慢就慢了,不差这几毫秒
icybee
2016-06-28 10:39:24 +08:00
php 与否,相对于 sql 我更喜欢 ORM ,首先是我觉得 ORM 有助于代码的维护和重构,有利于直观展示数据库结构,甚至直接利用框架迁移数据库( laravel,django ),其次是大部分 ORM 框架都很好的解决了注入和 charset 的问题,至于 LZ 说的几我认为是存在的,但是这些问题并不能掩盖 ORM 的闪光点
hpan
2016-06-28 10:39:40 +08:00
hibernate 搞个 hql 出来真是有点莫名其妙
pubby
2016-06-28 10:43:06 +08:00
用! 99%的项目都碰不到"性能"问题

一直用 Propel ORM
murmur
2016-06-28 10:44:34 +08:00
缓存做好 索引建好 表设计好 orm 的性能可以忽略不计 如果真有性能问题先找自己问题
fromsep
2016-06-28 10:46:20 +08:00
我个人感觉没有直接写 sql 来的爽
chmlai
2016-06-28 10:48:00 +08:00
什么年代了, 还有人纠结用不用 ORM?
Felldeadbird
2016-06-28 10:49:52 +08:00
基于这点就不会纠结:
简单得直接 ORM 。
复杂的必须原生 SQL 。
wjfz
2016-06-28 10:54:40 +08:00
几年前争论的点是要不要用框架。
yao978318542
2016-06-28 11:19:22 +08:00
我的天 我只用过 TP 怎么办?好慌!会不会暴露!
mahone3297
2016-06-28 11:21:51 +08:00
@wesley +1
b821025551b
2016-06-28 11:25:59 +08:00
@yao978318542 TP 里的 M 方法不就是 ORM 么。。。
zaishanfeng
2016-06-28 11:27:58 +08:00
现在硬件这么便宜还谈性能? 如果性能出问题,请检查你的架构。 php 端很少出现性能问题
lightening
2016-06-28 11:37:13 +08:00
不用 php, 但是用 ORM
1. 灵活。可以方便组合各种参数而不用自己拼字符串
2. 移植方便。比如从 MySQL 换到 pg 基本不用花特别的精力。如果有 migration ,方便解决生产环境数据库部署。
3. 代码清晰易读,易于维护
4. 安全,不用自己担心 said 注入
wclssdn
2016-06-28 11:40:24 +08:00
1. 我觉得 orm 相当灵活, ModelA::with(modelB) 直接就把 modelB 关联数据取出来了,不叫灵活么?

2. 你写 sql 的时候,是针对 mysql 的么?如果移植到其他 db ,还能用否?

3. 不会就去学,错用?说明你不会啊。。。就像普通 sql ,你会的语法是 100%么?

4.开启你的 mysql general_log ,然后看下 orm 给出的 sql 结果,跟你自己写的,哪个好?性能问题,也是 php 层面上多执行了一些方法而已。在 sql 上,比你拼的都好(用第一个问题的例子试试看就知道了。。。


工欲善其事必先利其器,提高生产力的东西,为何不用呢??? 人区别于动物,就是因为人善于用工具啊。。。否则就真的是程序“猿”了。。。。
stormpeach
2016-06-28 11:48:22 +08:00
方便,不用自己担心注入问题,大大增加了可维护性。

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

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

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

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

© 2021 V2EX