Laravel控制器中的foreach
Laravel foreach in Controller
我的控制器中的 foraech 循环有问题。
那是我的代码:
$appointments = Appointment::with('user')
->with('service')
->whereDate('scheduled_on', '>=', Carbon::today()->toDateString())
->orderBy('scheduled_on', 'asc');
Debugbar::info('$appointments count()='.$appointments->count());
if($appointments->count()) {
Debugbar::info('pos 1');
foreach ($appointments as $appointment) {
Debugbar::info('pos 2'); //not printed
}
}
return view('admin.appointments.index', ['appointments' => $appointments->paginate()]);
这就是我在调试栏中看到的内容:
$appointments count()=1
pos 1
因此,$appointments 有一个元素(第一个日志),但我无法在其上循环。
在视图文件中我使用
@foreach($appointments as $appointment)
在网格中显示我的结果,它工作正常。
您实际上并没有从查询中获取数据。
这部分创建一个查询生成器对象并使用查询准备它:
$appointments = Appointment::with('user')
->with('service')
->whereDate('scheduled_on', '>=', Carbon::today()->toDateString())
->orderBy('scheduled_on', 'asc');
然后你做一个 $appointments->count()
这将执行查询 :
select COUNT(*) from `appointements` where date(`scheduled_on`) >= ? order by `scheduled_on` asc
这将为您提供正确数量的结果,但不是实际结果。
当您转到视图时,您实际上执行了 $appointments->paginate()
,而 执行了查询。但是,当您尝试遍历查询构建器对象时。该迭代没有任何实际意义,很可能什么也没有发生。
如果你想遍历控制器中的数据,你可以这样做:
foreach ($appointments->get() as $appointment) {
Debugbar::info('pos 2');
}
我的控制器中的 foraech 循环有问题。
那是我的代码:
$appointments = Appointment::with('user')
->with('service')
->whereDate('scheduled_on', '>=', Carbon::today()->toDateString())
->orderBy('scheduled_on', 'asc');
Debugbar::info('$appointments count()='.$appointments->count());
if($appointments->count()) {
Debugbar::info('pos 1');
foreach ($appointments as $appointment) {
Debugbar::info('pos 2'); //not printed
}
}
return view('admin.appointments.index', ['appointments' => $appointments->paginate()]);
这就是我在调试栏中看到的内容:
$appointments count()=1
pos 1
因此,$appointments 有一个元素(第一个日志),但我无法在其上循环。 在视图文件中我使用
@foreach($appointments as $appointment)
在网格中显示我的结果,它工作正常。
您实际上并没有从查询中获取数据。
这部分创建一个查询生成器对象并使用查询准备它:
$appointments = Appointment::with('user')
->with('service')
->whereDate('scheduled_on', '>=', Carbon::today()->toDateString())
->orderBy('scheduled_on', 'asc');
然后你做一个 $appointments->count()
这将执行查询 :
select COUNT(*) from `appointements` where date(`scheduled_on`) >= ? order by `scheduled_on` asc
这将为您提供正确数量的结果,但不是实际结果。
当您转到视图时,您实际上执行了 $appointments->paginate()
,而 执行了查询。但是,当您尝试遍历查询构建器对象时。该迭代没有任何实际意义,很可能什么也没有发生。
如果你想遍历控制器中的数据,你可以这样做:
foreach ($appointments->get() as $appointment) {
Debugbar::info('pos 2');
}