2017-04-10 94 views
2

如果我写这样的foreach循环,是方法all()再次调用每个循环或只有一次?

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

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

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

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

回答

2

的代码两件会做完全相同的工作,将只创建一个数据库查询,但我会与此去更好的可读性:

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

谢谢您的回答,然后我用我的第一个例子,它的更清洁,我需要一个更少的刀片模板;) – Phil795

+0

@ Phil795 DB或Eloquent代码不应该在模板中。理想情况下,将其放入模型中。如果它只是一个有趣的小应用程序,您可以将它放到控制器上。另外,我非常肯定你会在未来将这个查询改变成不同的东西,所以我会尽量使用第二段代码。 –

+0

这只是一个简单的用户列表,我认为没有理由创建一个UserController来显示。 但是当然,“更大”的页面在控制器中是分开的 – Phil795