关闭。这个问题需要更多 focused 。它目前不接受答案。












想改善这个问题吗?更新问题,使其仅关注 editing this post 的一个问题。

1年前关闭。



Improve this question




我在 Laravel 查询构建器和 eloquent 之间做了一些性能测试。使用各种 sql 语句(select-update-delete-insert)查询构建器要快得多。

所以我的问题是:为什么有人使用 Laravel Eloquent 来对抗普通查询构建器?

最佳答案

Eloquent 是 Laravel 对 Active Record 模式的实现,它具有所有优点和缺点。

Active Record 是以 CRUD 方式处理单个实体的一个很好的解决方案 - 即创建一个具有填充属性的新实体,然后将其保存到数据库、从数据库加载记录或删除。

您将从 Eloquent 的功能中受益匪浅,例如脏检查(仅针对已更改的字段发送 SQL 更新)、模型事件(例如,在有人创建新帐户时发送管理警报或更新统计计数器)、特征(时间戳、软删除、您的自定义特征)急切/延迟加载等。您还可以应用域驱动模式并在您的 Active Record 实体中实现一些业务逻辑,例如,验证、管理关系、计算等。

但是,正如您已经知道的,Active Record 带来了一些性能代价。

当您处理单条记录或几条记录时,无需担心。但是对于读取大量记录的情况(例如对于数据网格、报告、批处理等),普通的 Laravel DB 方法是更好的方法。

对于我们基于 Laravel 的应用程序,我们将使用两种我们认为合适的方法。我们使用 Laravel 的 Eloquent for UI 表单来处理单个记录并使用 DB 方法(由 SQL View 支持,并具有额外的数据库引擎特定性能调整)来检索 UI 表、导出任务等的数据。它也适用于 RESTful API - Eloquent for GET, PUT, POST, DELETE with a key and DB for GET without key but with filters and sorting and paging.

关于mysql - Laravel Eloquent 与查询构建器 - 为什么使用 eloquent 来降低性能,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38391710/

10-16 13:14