Laravel Eloquent ORM vs Query构建器哪个更好?

时间:2018-03-05 07:18:28

标签: sql laravel

任何人都可以告诉我ORM或查询构建器哪个会更好吗?它有什么好处?

3 个答案:

答案 0 :(得分:2)

<强> ORM

  • 以OOP方式为您提供一个不错的API
  • 你可以轻松地玩弄人际关系
  • 您还可以处理Polymorphic Relationships
  • 中未提供的Query Builder
  • 你不必担心加入。
  • 您可以使用更少的代码完成更多工作。
  • 您可以使用可以节省大量时间的mutators和setter
  • 在测试中您可以轻松地模拟对象。
  • 您可以投射列类型。

希望这些足够

答案 1 :(得分:2)

我们使用像Laravel这样的框架来简化我们的工作。在框架概念方面,速度和易于开发比性能更重要。因此,通过使用ORM,它提供了强大的方法来处理数据库,而不需要繁重的mysql知识。在查询构建器的情况下,它提供了以有效方式构建查询的方法。

根据我的经验,有些事情我们用Eloquent不能轻易做到。那么我们需要使用查询构建器来构建直接查询。

所以我认为比较Eloquent和查询构建器并不好。

您可以找到更多详情here

但我可以给你一些选择一种方法的技巧。

  • 如果你更了解效率而不是开发的简易性, 转到查询构建器。
  • 如果您与一个实体打交道,请选择ORM,(Eloquent)。
  • 如果您处理多个实体,最好处理查询 助洗剂。
  • 如果您是mysql新手,或者您的应用程序不是很复杂, 绝对选择ORM。
  • 如果您需要更复杂的查询,我建议您使用查询构建器。

答案 2 :(得分:1)

是的,在某些情况下您是对的。当我们拥有更多数据并且几乎在每个站点中时,数据确实不小。那么最好使用数据库查询而不是雄辩查询。

在雄辩的VS DB的性能问题中,我听说过

要为一个简单的表插入1000行,Eloquent需要1.2秒,在这种情况下,DB Facade仅需要800毫秒(ms)。

那为什么要那么雄辩呢?没必要吗?

答案是-雄辩也是必要的。原因-

要建立更好的关系并在需要联接时使用非常简单的语法查看结果。

口才还适合那些不了解SQL查询的人。

一个MVC框架遵循代码可读性,代码可维护性的规则,您知道这是Eloquent。下面的代码比较。显然,口才更好阅读。

// In Eloquent
$student = App\Student::find($id);

// In DB facade
$student = DB::table('student')->where('id', $id)->first();

最重要的部分是如果我们要更改其他数据库,那么原始查询将使我们非常头疼,在这种情况下,Laravel Eloquent会用一只手解决所有问题。它可以处理不同类型的数据库。

因此,当我们使用Eloquent和When when DB Facades时:

当我们在具有简单CRUD的简单小型记录站点上工作并且那里没有记录时,请在此处使用Eloquent。 当我们处理大量记录时,使用DB Query比使用Eloquent更好。 因此,最后要弄清楚的是-什么时候使用数据库查询,什么时候使用口才查询。

编辑-真实示例

  

我正在建立大学网站。最多可能包含5,000个   教师和10,000名学生,以及一些通知和文件。那是   最好使用简单的Laravel Eloquent做到这一点,这非常   标准且可读。

     

现在,我正在制作一个类似Stackoverflow的网站。其中可能包含多个   1,000,0000(1 crore)个帖子以及更多其他东西。我必须选择   那里的传统DB外墙。搜索更快   来自如此多的记录的帖子。

您可以使用Laravel Debugbar(用于检查口才/数据库查询性能/执行时间的流行软件包)检查查询性能

现在由您选择。你想做什么...