V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
abcbuzhiming
V2EX  ›  PHP

Laravel 可不可以不用那个 ORM

  •  
  •   abcbuzhiming · 2017-03-21 16:33:25 +08:00 · 5576 次点击
    这是一个创建于 2800 天前的主题,其中的信息可能已经有所发展或是发生改变。
    都说这个 ORM 工具是 laravel 慢的根源,本人从 java 过来的,先用过 hibernate ,然后过度到 mybatis ,因为有这个经历,从来不觉得硬需要一个 ORM 工具,只要数据库访问的接口方便好用灵活就行。 Laravel 的数据可基本操作可有什么非上 ORM 不可的地方吗?如果没有,能不能把 ORM 拆掉以增加速度
    25 条回复    2019-05-20 20:44:59 +08:00
    garveen
        1
    garveen  
       2017-03-21 16:35:52 +08:00
    你可以根本不用, DB 这个 facade 提供了足够的操作数据库的方法
    abcbuzhiming
        2
    abcbuzhiming  
    OP
       2017-03-21 16:37:40 +08:00
    @garveen 那如果我不用这个 ORM ,在一次请求过程中 Laraval 还会加载和 ORM 相关的组件吗?
    mooncakejs
        3
    mooncakejs  
       2017-03-21 16:38:06 +08:00
    可以不用。 equolent 太灵活,刚开始觉得很好用,越来越觉得不好用。
    ahkxhyl
        4
    ahkxhyl  
       2017-03-21 16:44:51 +08:00
    你的代码你做主~
    lookas2001
        5
    lookas2001  
       2017-03-21 17:54:41 +08:00
    autoload 还是会加载到类吧,但是你不用的话不会实例化他的(大概?
    jhdxr
        6
    jhdxr  
       2017-03-21 18:11:22 +08:00
    @abcbuzhiming 如果把『加载』定义为去 include/require 对应的文件,以及实例化对象。那么你不用到相应的功能,是不会加载的。

    @lookas2001 参见 spl_autoload_register , autoload 具体的规则是自己实现的。 composer 所实现的 autoload 的逻辑,在你没有去用到那个类的时候,是不会去读对应的文件的
    suren1986
        7
    suren1986  
       2017-03-21 18:13:22 +08:00
    DB:raw('raw sql command');
    quericy
        8
    quericy  
       2017-03-21 18:29:54 +08:00
    可以只用 illuminate 的查询构造器
    littleylv
        9
    littleylv  
       2017-03-21 18:35:21 +08:00
    考虑换一个轻量级的框架?
    cxbig
        10
    cxbig  
       2017-03-21 19:02:52 +08:00
    LZ 说的太模糊,你用什么方式发现 ORM 慢的?拿数据来说话好么?能不能发代码来让大家看看?
    changwei
        11
    changwei  
       2017-03-21 19:25:43 +08:00 via Android
    我只用查询构造器,主要还是简单方便,而且我对原生 sql 的阅读和理解更加快速。

    另外说一下, laravel 是按需加载。而且我有用过 xhprof 测过 laravel 的执行流程,最慢的是路由,当然 orm 也不是很快。
    orvice
        12
    orvice  
       2017-03-21 22:18:14 +08:00
    可以,建议 lz 试试看 lumen
    wdlth
        13
    wdlth  
       2017-03-21 22:25:33 +08:00
    相比于数据库的查询时间而言, ORM 的耗时其实也不算多少。
    当然对于高级 DBA 来说,就是喜欢一点点的玩坏 SQL 。
    Felldeadbird
        14
    Felldeadbird  
       2017-03-22 00:03:41 +08:00
    本身不是提供原生 SQL 写法吗?
    tcsky
        15
    tcsky  
       2017-03-22 00:31:00 +08:00
    慢的不是 orm,是路由什么的. php 和 java 特性差很多.
    dsg001
        16
    dsg001  
       2017-03-22 08:33:25 +08:00
    不用 laravel ,但 orm 只用 equolent
    superkey
        17
    superkey  
       2017-03-22 08:52:27 +08:00
    那为什么要用 laravel 呢
    likezun
        18
    likezun  
       2017-03-22 09:13:50 +08:00
    ORM 用过 propel 和 doctrine , 你没有理解 ORM 才会认为它慢, 简单的说你还不会用
    qhxin
        19
    qhxin  
       2017-03-22 09:40:05 +08:00 via Android
    eloquent 经常拆出来单独使用
    KIDJourney
        20
    KIDJourney  
       2017-03-22 09:40:21 +08:00
    慢是怎么得出的?
    iot
        21
    iot  
       2017-03-22 10:22:26 +08:00
    我写复杂的 sql 不用 ORM ,太复杂了,直接用 DB::raw
    ipom
        22
    ipom  
       2017-03-22 10:48:01 +08:00
    LZ 用 Phalcon 框架的 ORM 组件吧
    GnailiyLin
        23
    GnailiyLin  
       2017-03-22 15:25:32 +08:00
    在 laravel 框架上做过测试,结果很意外, eloquent 是最快的,但是耗费内存也是最高的。
    river1007
        24
    river1007  
       2017-03-23 14:17:14 +08:00
    https://github.com/slimphp/Slim 用这个吧。想换啥都行。
    whitecaihong
        25
    whitecaihong  
       2019-05-20 20:44:59 +08:00
    http://www.wangsitong.com/index.php/archives/121/ 我做过测试,楼上说哪慢的真的觉得 laravel 是世界上最好的语言的最好的框架么?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5291 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 09:30 · PVG 17:30 · LAX 01:30 · JFK 04:30
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.