Laravel - Raw SQL 还是 Eloquent ORM

更新日期: 2019-01-10 阅读次数: 13088 分类: Laravel

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 聊聊, 查看更多联系方式

谈笑风生

梦的飞起

我也习惯用 raw sql :)