我在Laravel query builder和eloquent之间做了一些性能测试.使用各种sql语句( Select 更新删除插入),查询生成器的速度要快得多.
所以我的问题是:为什么有人使用Laravel Elount来对抗普通查询生成器?
我在Laravel query builder和eloquent之间做了一些性能测试.使用各种sql语句( Select 更新删除插入),查询生成器的速度要快得多.
所以我的问题是:为什么有人使用Laravel Elount来对抗普通查询生成器?
Laravel对活动记录模式的实现很有说服力,它有其所有的优点和缺点.
Active Record是以CRUD方式处理单个实体的一个很好的解决方案,即创建一个具有填充属性的新实体,然后将其保存到数据库、从数据库加载记录或删除.
您将从Eloquent的功能中受益匪浅,例如脏判断(仅针对已更改的字段发送SQL更新)、模型事件(例如,当有人创建了新帐户时发送管理alert 或更新统计计数器),特性(时间戳、软删除、自定义特性)Eager /懒惰加载等.您还可以应用域驱动模式,并在活动记录实体中实现一些业务逻辑,例如验证、管理关系、计算等.
但是,正如你已经知道的,Active Record有一些性能价格.
当你处理一条或几条记录时,没有什么好担心的.但对于读取大量记录的情况(例如数据网格、报告、批处理等),普通的Laravel DB
方法是更好的方法.
对于我们基于Laravel的应用程序,我们正在使用我们认为合适的两种方法.我们使用Laravel的Elount for UI表单来处理一条记录,并使用DB
种方法(由SQL视图支持,带有额外的数据库引擎特定性能调整)来检索UI表、导出任务等的数据.它还可以与RESTful API配合使用——Elount for GET、PUT、POST、,用一个键删除,用DB
表示无键GET,但使用过滤器、排序和分页.