这听起来可能是一个显而易见的问题,但我只是想得到一些保证。
据我所知,使用Laravel的急切加载功能,它将创建两个查询,以返回相关结果的完整列表(例如,如果您使用两个表)。但是,如果我错了,请纠正我,使用join语句将只剩下一个查询,这减少了到服务器数据库(MySQL)的往返次数,是一个更高效的查询。
我知道你可以在Laravel中编写连接查询,这很好,所以问题是:当我从两个或多个表检索相关数据时,我是否不应该费心于急切的加载,而只是编写自己的连接语句?
******编辑*******
一年后回到这一点,我个人认为,只要把问题写出来,原封不动,写得好。
********编辑2*********
好吧,六年后的今天,我一直为此得分。
我是否从一开始就不清楚,与我上面所说的相反,在这一点上雄辩写下了伟大的疑问。使用雄辩-即使有一点查询效率低下,它也允许您编写非常清晰、可维护的代码,在我职业生涯的这一点上,我认为这在大多数情况下更为重要。只有在性能增强非常关键的情况下才编写原始查询并进行优化,并且您可以衡量其影响。
你的理解完全正确。如果使用Laravel
中的join()
编写join
语句来连接两个或多个表,那么它只进行一次查询,而使用elount
模型和急切加载
技术需要多个查询。
我是否应该不费心于急切的加载,而只是编写自己的连接语句
实际上,渴望加载
是一种使用雄辩ORM
轻松加载相关模型的技术,它在场景后面使用查询生成器
,允许您使用雄辩模型对象
,而无需通过您的查询自和表示不同的数据,使用雄辩的ORM
,您可以直接与模型进行交互,该模型表示数据库中具有附加功能的对象。最重要的是,它隐藏了SQL
的复杂性,并允许您使用PHP
代码以OOP方式进行数据库查询。
但是,当您手动调用属于照明\数据库\查询\生成器
类的连接
方法时,您将直接使用查询生成器
,这需要您编写更多的代码,并需要更多的知识sql查询
因为它不会向您隐藏查询,而是帮助您更精确地进行查询,但您仍然进行查询。
两者都是不同的东西,工作方式也不同。您可以使用术语ORM vs Query Builder
在Google
上搜索。