问题 Laravel渴望加载vs显式连接


这可能听起来像一个明显的问题,但我只想得到一些保证。

使用Laravel的渴望加载功能,从我理解它将创建 两个问题 返回一个完整的相关结果列表(比如说你正在使用两个表)。但是,如果我错了,请纠正我,使用join语句只会让你失望 一个查询,这创建了一个较少的往返服务器的数据库(MySQL),是一个更有效的查询。

我知道你可以在Laravel中编写连接查询,这很好,所以问题是:我不正确地假设当从两个或多个表中检索相关数据时,我是否应该费心去加载,而只是编写我自己的连接声明?

******编辑*******

回到这一年后,我个人认为,只需编写查询,生成并写好。


1157
2018-06-17 19:00


起源



答案:


你完全理解你的理解。如果你写一个 join 用于连接两个或多个表的语句 join() 在 Laravel 然后它只使用一个查询 Eloquent 模特 eager loading 技术需要多个查询。

如果我不打算急切加载,而只是写我自己的   加入陈述

实际上, eager loading 是一种使用加载相关模型的技术 Eloquent ORM 很容易,它使用 Query Builder 在幕后,让你使用 Eloquent Model Object 无需自己进行查询并以不同方式表示数据,使用 Eloquent ORM 您可以直接与模型交互,这些模型使用其他功能表示数据库中的对象。最重要的是,它隐藏了复杂性 SQL 并允许您使用OOP方式进行数据库查询 PHP 码。

但是当你手动打电话 join 属于的方法 Illuminate\Database\Query\Builder 那么你正在使用的 Query Builder 直接,这需要你写更多的代码,需要更多的知识 sql query 因为它不会隐藏您的查询,但可以帮助您更精确地进行查询,但您仍然可以进行查询。

两者都是不同的东西,它们的工作方你可以搜索 Google 使用这个词 ORM vs Query Builder


11
2018-06-17 21:23



感谢您的见解!我会就此事进行更多研究。 - Meowts
当系统有大量数据时,我担心ORM会在场景后面构建复杂的查询,难以优化查询数据库。 - Meas


答案:


你完全理解你的理解。如果你写一个 join 用于连接两个或多个表的语句 join() 在 Laravel 然后它只使用一个查询 Eloquent 模特 eager loading 技术需要多个查询。

如果我不打算急切加载,而只是写我自己的   加入陈述

实际上, eager loading 是一种使用加载相关模型的技术 Eloquent ORM 很容易,它使用 Query Builder 在幕后,让你使用 Eloquent Model Object 无需自己进行查询并以不同方式表示数据,使用 Eloquent ORM 您可以直接与模型交互,这些模型使用其他功能表示数据库中的对象。最重要的是,它隐藏了复杂性 SQL 并允许您使用OOP方式进行数据库查询 PHP 码。

但是当你手动打电话 join 属于的方法 Illuminate\Database\Query\Builder 那么你正在使用的 Query Builder 直接,这需要你写更多的代码,需要更多的知识 sql query 因为它不会隐藏您的查询,但可以帮助您更精确地进行查询,但您仍然可以进行查询。

两者都是不同的东西,它们的工作方你可以搜索 Google 使用这个词 ORM vs Query Builder


11
2018-06-17 21:23



感谢您的见解!我会就此事进行更多研究。 - Meowts
当系统有大量数据时,我担心ORM会在场景后面构建复杂的查询,难以优化查询数据库。 - Meas