Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel-查询未返回结果时未定义的变量_Php_Laravel_Laravel 4_Eloquent - Fatal编程技术网

Php Laravel-查询未返回结果时未定义的变量

Php Laravel-查询未返回结果时未定义的变量,php,laravel,laravel-4,eloquent,Php,Laravel,Laravel 4,Eloquent,如果查询没有任何结果(这是可能的),则分配给查询的变量将在If(!$alerts)行上返回错误“undefined variable$alerts” $alerts变量不在控制器内的任何其他位置 即使查询没有返回任何结果,它也应该能够通过if(!$alerts) 谢谢您的帮助。当$locations为空时,foreach将不会循环,并且$alerts将不会初始化。我建议在循环之前初始化变量: $alerts = null; foreach ($locations as $location) {

如果查询没有任何结果(这是可能的),则分配给查询的变量将在
If(!$alerts)
行上返回错误“undefined variable$alerts”

$alerts
变量不在控制器内的任何其他位置

即使查询没有返回任何结果,它也应该能够通过
if(!$alerts)


谢谢您的帮助。

$locations
为空时,foreach将不会循环,并且
$alerts
将不会初始化。我建议在循环之前初始化变量:

$alerts = null;

foreach ($locations as $location) { }

if(!$alerts) { }
你可以试试这个:

$alerts = Alert::whereIn('location_id', $locations)->lists('id');

if(!$alerts) {

    return Redirect::to('/users/')->with('message-warning', 'Your message!');
}

最好只执行一个查询。

首先不要将查询执行到循环中,即使这样做了,也要确保将结果存储在数组中而不是变量中,因为这样您的结果将始终是查询的最后一行。在进入foreach循环之前,您应该声明$alert变量/数组,这样,如果您的查询没有返回任何结果,那么您的变量/数组将仍然存在;在您的情况下,如果您的查询没有返回任何结果,那么您根本就没有$alert变量。

非常有效,非常感谢@DamienPirsy。我可以在9分钟内接受答案。我觉得您的代码看起来有问题,起初为什么在循环内使用db查询,在最后一个循环后,
$alerts
将是最后一项。您是否正在尝试在循环内构建一个
$alerts
数组?如果是这样,您应该使用
$alerts[]=Alert::where…
,否则您只会从循环中的最后一个位置返回警报。@TheAlpha,@Damiani,你们都是对的-我完全忽略了这一点<代码>$alerts[]返回所有结果。非常感谢你的提醒!“where”语句将不再需要围绕它的
forloop
?我还有其他
where
语句,为了简化公式,我删除了这些语句,我可以在我假设之后添加这些语句。如果使用
where
,它将使用一个DB查询查找数组中的所有项。是的,没错,为什么不试试:-)谢谢@TheAlpha的解释。你应该用你的更新Laravel文档!工作完美。非常感谢阿尔法,我欠你一个人情!
$alerts = Alert::whereIn('location_id', $locations)->lists('id');

if(!$alerts) {

    return Redirect::to('/users/')->with('message-warning', 'Your message!');
}