刚打印了 英文文档 准备看一遍 比 laravel activerecord 有什么优势没?
1
BeijingBaby 2023-09-24 12:03:40 +08:00
有点重,用的好都得是对象,可能会成为性能瓶颈。
|
2
Georgedoe 2023-09-24 12:19:11 +08:00
laravel orm 底层就是用的 doctrine
|
3
dw2693734d 2023-09-24 14:08:44 +08:00
难用
|
4
fincci 2023-09-26 15:16:57 +08:00
现在公司用的 symfony 框架,所以 doctrine 我也用了两年了,
优点:他走的 datamapper 的路子,自带 entity 和 repository 分层,我觉得比 laravel 更加符合面向对象的思路,架构上扩展性还是挺好的,doctrine 本身也自带 DQL 缓存,还支持查询缓存,性能方面应该是不输 eloquent ,我觉得可能还更高点,另外还支持 sql walker 修改 DQL 语法树,支持自查询结果 hydration ,可玩性还是挺高的 缺点:写起来没那么舒服,代码凉 eloquent 是 laravel 风格写法,写法很奔放,queryBuilder 可以各种注入闭包,写起来很流畅,doctrine 就不行了,另外 eloquent 里面的各种魔法操作,getAttribute ,setAttribute 以及 typecasting 等等,在 doctrine 里面也写不了,总之 doctrine 写起来没有 laravel 爽,限制很多 |
7
fincci 2023-09-26 15:37:19 +08:00
@zzzkkk 还好吧,如果在 symfony 里面用命令行创建 entity 的话其实 set 和 get 方法自动就生成了,我感觉 set get 现在已经成为 php 面向对象的标准写法了,一般都是 private + get/set ,这样应该是解耦合隔离的思路
|
8
fincci 2023-09-26 15:41:45 +08:00
@zzzkkk form ,我刚用的时候也觉得恶心,现在也是习惯了,如果不搞分离的话 form 还是挺有用的,现在我做前后端分离感觉 symfony 生态还是太差了,手动 validation ,data transformer ,这些玩意 symfony 都没有,用起来很不顺手
|
9
zzzkkk OP |
10
ywisax 2023-10-10 02:28:25 +08:00
有一个隐含的优点,就是如果基于 doctrine/orm 的文档去写代码的话,你的数据库表设计会变好。
这是 doctrine/orm 那么多约束带来的好处。 |