Laravel - 如果查询未返回任何结果,则为未定义的变量

时间:2014-11-09 20:18:03

标签: php laravel laravel-4 eloquent

如果查询没有任何结果,那么查询所分配的变量将返回错误' 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)进行检查吗?

感谢您的帮助。

3 个答案:

答案 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变量。