如果查询没有任何结果,那么查询所分配的变量将返回错误' undefined variable $ alerts'在if(!$alerts)
行。
foreach($locations as $location)
{
$alerts = Alert::where('location_id', '=', $location)
->lists('id');
}
if(!$alerts){
return Redirect::to('/users/')->with('message-warning',
'No matches have been found yet.');
}
$alerts
变量不在控制器中的任何其他位置。
即使查询没有返回任何结果,它仍然可以通过if(!$alerts)
进行检查吗?
感谢您的帮助。
答案 0 :(得分:1)
你可以试试这个:
$alerts = Alert::whereIn('location_id', $locations)->lists('id');
if(!$alerts) {
return Redirect::to('/users/')->with('message-warning', 'Your message!');
}
更好,只会执行一个查询。
答案 1 :(得分:0)
当$locations
为空时,foreach不会循环,$alerts
将不会被初始化。我建议在循环之前初始化变量:
$alerts = null;
foreach ($locations as $location) { }
if(!$alerts) { }
答案 2 :(得分:0)
首先不要在循环中执行查询,即使这样做也要确保将结果存储在数组而不是变量中,因为那时结果将始终是查询的最后一行。你应该在进入foreach循环之前声明$ alert变量/数组,这样如果你的查询没有返回任何结果你的变量/数组仍然存在,在你的情况下,如果你的查询没有返回任何结果你不要t根本就有$ alert变量。