Raw SQL 还是 ORM,这是一个问题。
使用 Laravel 这类 Web 框架,总会面临一个问题,“ORM 更好? 还是 Raw SQL 更好?”
在我看来 Laravel 的 Eloquent 足够好,甚至比 Django 的 ORM 机制更灵活。但是,我依然很纠结
我不喜欢 ORM 的理由
- 代码可读性。我更习惯阅读 Raw SQL; ORM 代码看起来略丑。
- 开发效率。由于 ORM API 的熟练程度远不如 Raw SQL, 即使拥有了 VIM Snippets 也痛苦异常,很多时候还是要翻看官网文档,影响敲代码的速度。
- 学习成本。每一个框架都重新学习一套 ORM API,实际上非常不值得。
- 性能。我更喜欢将联表查询拆分成多条简单 SQL。
我喜欢 ORM 的理由
- 自动的分页处理
- 记录保持时的自动校验
所以,在目前的 Laravel 项目中,我的习惯是:
除了分页,创建新记录,其他都用 Raw SQL。也就是说 ORM 与 Raw SQL 混用。
ORM 的独门优势
$sql_orders = Order::where('user_id', $user->id)
if ($status !== NULL) {
$sql_orders->where('status', $status);
}
$orders = $sql_orders->orderBy('id', 'desc')->get();
这种根据不同条件,来采用不用 where 条件的非常适合 ORM。
微信关注我哦 👍
我是来自山东烟台的一名开发者,有感兴趣的话题,或者软件开发需求,欢迎加微信 zhongwei 聊聊, 查看更多联系方式
谈笑风生
梦的飞起 8年前