gpt4 book ai didi

mysql - Laravel 急切加载与显式连接

转载 作者:IT老高 更新时间:2023-10-29 00:01:16 25 4
gpt4 key购买 nike

这听起来像是一个显而易见的问题,但我只是想得到一些保证。

使用 Laravel 的预加载功能,据我所知,它将创建两个查询 以返回相关结果的完整列表(假设您正在使用两个表)。但是,如果我错了,请纠正我,使用连接语句只会让您有一个查询,这会减少到服务器数据库 (MySQL) 的往返次数,并且是一种更高效的查询。

我知道你可以在 Laravel 中编写连接查询,这很棒,所以问题是:我是否错误地假设当从两个或多个表中检索相关数据时,我是否应该不用急于加载而只是写我自己的连接语句?

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

一年后回到这个问题上,我个人认为,只写查询,原始的,并且写得很好。

********* 编辑 2 *********

好吧,六年后的现在,我一直为此获得积分。

无论我是否从一开始就不清楚,与我上面所说的相反,Eloquent 在这一点上写出了很好的查询。 使用 Eloquent - 即使查询效率稍低,它也能让你编写非常清晰、可维护的代码,在我职业生涯的这个阶段,我认为这在大多数情况下更为重要个案。仅在性能增强至关重要且您可以衡量影响的情况下编写原始查询和优化。

最佳答案

您的理解完全正确。如果您在 Laravel 中使用 join() 编写 join 语句来连接两个或多个表,那么它只会在使用 的情况下进行一次查询>具有 eager loading 技术的 Eloquent 模型需要多个查询。

should I not bother with eager loading and instead just write my own join statements

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

但是当您手动调用属于 Illuminate\Database\Query\Builder 类的 join 方法时,您将直接使用 Query Builder这需要您编写更多代码并需要更多关于 sql 查询 的知识,因为它不会向您隐藏查询,但可以帮助您更精确地进行查询,但您仍然会进行查询。

两者是不同的东西,它们的工作方式也不同。您可以使用术语 ORM vs Query BuilderGoogle 上进行搜索。

关于mysql - Laravel 急切加载与显式连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24271416/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com