最近在开发的一个项目都是手写SQL,感觉很繁琐啊;
想用orm,但是有的观点是orm不灵活,而且效率不高;
这方面有实际经验的小伙伴给个意见吧。
1
cevincheung 2015-06-15 22:10:42 +08:00
手写sql
自己封装一些常用的join、insert、update、delete就好了。 |
2
lbp0200 2015-06-15 22:29:18 +08:00 via Android
laravel里面有,挺方便的
|
3
abelyao 2015-06-15 23:15:30 +08:00 via iPhone
如果用框架的话,一般都自带 ORM 了。
或者楼主可以搜一个叫 medoo 的类库,封装了 SQL 的操作,挺方便的。 |
4
mcfog 2015-06-15 23:32:12 +08:00 via Android
看你有多少队友,队友的平均&最低战斗力,以及项目打算维护多久决定了
我个人来说是极其讨厌 |
5
mcfog 2015-06-15 23:33:30 +08:00 via Android
(续)极其讨厌手写sql的,至少也会弄个类似NotORM的dbal来屏蔽sql这件事
|
6
lincanbin 2015-06-16 00:32:03 +08:00 1
我倒是非常喜欢手写SQL,组装的黑盒看不见里面总是不太高兴。
SQL并不复杂,最多也就十几二十行,也就直接写了。 |
7
Septembers 2015-06-16 02:02:49 +08:00 via Android
@lincanbin ORM细节不可控,有些意想不到问题就来自这些细节
|
8
yegle 2015-06-16 03:23:40 +08:00
手写哈哈哈哈等着被注入吧。好歹绑定个变量啊
|
9
hgc81538 2015-06-16 03:34:57 +08:00 via iPhone
RedBeanPHP
http://www.redbeanphp.com |
10
mahone3297 2015-06-16 07:08:21 +08:00
有必要,doctrine
|
13
weer0026 2015-06-16 08:19:25 +08:00
用ORM主要是喜欢它可以通过查询取出对象数组。
|
14
c060604 2015-06-16 08:58:14 +08:00
orm开发效率高 找些成熟的类库就没什么多大问题
|
15
yangmls 2015-06-16 09:02:50 +08:00
@lincanbin 字段和库更名了,手写改起来就很蛋疼
不过 ORM 也可以手写 SQL,比如 Yii 就提供过 findBySql 这样的玩意 不过就算不用 ORM,我感觉 query builder 也是更好的选择 |
16
yakczh 2015-06-16 09:07:13 +08:00
如果用json把sql参数写成配置文件, 就不用写拼字符串了,也不用改代码,这种方式可行吗?
|
17
tabris17 2015-06-16 09:08:56 +08:00
PHP的ORM非常弱逼。也就Phalcon的ORM支持PHQL还凑合
|
18
66beta 2015-06-16 09:44:41 +08:00
Laravel Eloquent
|
19
mhycy 2015-06-16 09:52:11 +08:00
用PDO一直都不用拼接字符串。。
原生支持参数化查询,包装一下就好了 |
20
lujiajing1126 2015-06-16 09:57:48 +08:00
Doctrine
|
21
Agromania 2015-06-16 11:13:43 +08:00
Doctrine or Eloquent
手写sql。。。等着被注入吧+1 |
22
wingoo 2015-06-16 11:33:13 +08:00
|
24
fangjinmin 2015-06-16 12:30:08 +08:00
ORM不好对SQL优化。还是直接用SQL比较好。
|
25
xujif 2015-06-16 13:32:21 +08:00
orm开发,sql优化。为接口编程。
|
26
TangMonk 2015-06-16 13:38:04 +08:00
Doctrine
|
27
ywisax 2015-06-16 14:25:28 +08:00
长期维护的项目,牺牲一定灵活性和运行效率来换取 编码效率是值得的,我认为有必要用orm。
php中的orm一般都是做sql拼凑、参数过滤和绑定、部分有缓存功能或query builder,设计得好的话,可以让代码逻辑更加优美。 框架推荐的话,大型的推荐doctrine/orm,微型的有redbean,适中的有PhpActiveRecord。对个人来说,用得最舒服的orm类库,是yii2的ActiveRecord和kohana的orm module。 |
28
danial 2015-06-16 15:09:28 +08:00
绝对需要。
推荐是Doctrine/ORM,lavarel目前还没用过,不做评价。 |
29
bearzk 2015-06-16 15:46:48 +08:00
推荐同事写的 https://github.com/ihabunek/phormium
虽然他说了 'test before use' 但是其实我们的production api已经在用这个了 :) |
30
hildert 2015-06-16 16:24:17 +08:00
Doctrine
|
31
timsims 2015-06-16 16:28:04 +08:00
ORM不灵活这观点从何而来,正因为手写SQL太繁琐才需要ORM
目前用Laravel Eloquent |
33
gDD 2015-06-17 11:50:36 +08:00
@Agromania 我的回复里既没有推崇手写 SQL 也没有推崇重造一个 ORM 出来,那么后面两个问号就不是针对我的。另外 ORM 的代码确实是手写出来,但这和本帖的主题「手写 SQL 语句」是两个概念啊。*当然*,手写 SQL 语句不代表会被注入。
|
35
infatu8 2019-08-17 11:44:03 +08:00
长远考虑,必须手写啊
直接用 pdo,或在 pdo 的基础之上做简单的封装即可 什么 orm 都是浮云,当项目越做越大,最后你会发现,你之前用 orm 做的 db 操作 一半都要优化成手写 sql 另外,手写 sql 不代表着会被注入,凡是认为手写 sql 就会被注入的,证明你功力还不够,基础不行 |
36
infatu8 2019-08-17 11:47:02 +08:00
补充:
手写 sql 并把相关方法放到模型里去,这样有助于理解什么是模型 orm 让很多新人误解了模型的概念 |