Laravel PHP foreach(User::all() as $user) 性能问题

3
如果我写了一个像这样的foreach循环,方法all()会在每次循环中被调用还是只调用一次?
foreach(User::all() as $user) { ... }

在C#中,我知道all()函数只会执行一次。但在PHP中呢?

或者,如果我像这样将数据保存在变量中,会更快吗?

$users = User::all();
foreach($users as $user) { ...}
1个回答

5

这两段代码的功能是完全相同的,并且只会生成一次数据库查询,但是为了更好的可读性,我建议使用下面的代码:

$users = User::all();
foreach ($users as $user) { ... }

谢谢您的回答,那我就使用我的第一个例子,它更简洁,而且在 blade 模板中需要少一行 ;) - Philipp Nies
@Phil795 数据库或Eloquent代码不应该出现在模板中。最好将其放在模型中。如果只是一个小的娱乐应用程序,可以将其放到控制器中。此外,我相信您将来会将此查询更改为其他内容,因此无论如何我都会选择第二段代码。 - Alexey Mezenin
这只是一个简单的用户列表,我认为没有必要创建一个UserController仅用于显示。 但当然,“更大”的页面会在控制器中分离。 - Philipp Nies
这种方法的另一个问题是,当您有4000个用户时,此页面将崩溃。 - Matthew Usurp
我理解您的考虑,但该应用程序有一个固定的300用户大小。 - Philipp Nies

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接