当我检查集合是否为空时我有问题,Laravel给我错误
“调用未定义的方法 照亮\数据库\查询\生成器::的isEmpty()”。
它在其他Controller中工作,但当控制器在Sub文件夹中时突然停止工作。
这是我的代码:
$group = UserGroup::where('id', $request->group_id)->first();
if($group->isEmpty()){ // I get error from here
return redirect()->back();
}
答案 0 :(得分:1)
在PHP中最流行的调试方式之一仍然保持不变 - 在浏览器中显示变量,希望找到错误。 Laravel有一个特定的短助手函数来显示变量 - dd()
- 代表“Dump and Die”
,但它并不总是方便。还有什么其他选择?
请注意,下面提到的方法是查找我们的类失败的位置以及执行查询后可用的所有条件。在打印之前我们的预期结果是什么。这种方法是找出is所需错误的最佳方法。
首先,dd()有什么问题?好吧,假设我们想从DB表中获取所有行并转储它们:
$methods = PaymentMethod::all();
dd($methods);
我们会这样看:
但是你明白了 - 要查看实际值,我们需要再点击三次,如果没有这些操作,我们就看不到完整的结果。起初我以为 - 也许dd()函数有一些参数吗?不幸的是。那么让我们看看其他选项:
var_dump()和die():
显示任何类型数据的好旧PHP方式:
$methods = PaymentMethod::all();
var_dump($methods);
die();
我们现在看到的:
但是有更可读的方式。
另一个PHP内置函数print_r()
对我们有一个完美的描述:“打印有关变量的人类可读信息”
$methods = PaymentMethod::all();
print_r($methods);
die();
然后转到查看浏览器的来源...我们得到了这个:
现在我们可以轻松阅读内容并尝试调查错误。
此外,print_r()
函数有另一个带有true / false值的可选参数 - 您不仅可以回显该变量,还可以将其作为字符串返回到另一个变量中。然后,您可以将多个变量合并为一个,也可以将其记录到某个位置,例如。
因此,在这种情况下,dd()
并不那么方便 - PHP本机功能可以帮助您解决问题。但是如果你希望脚本实际上“转储一个简单的变量而死” - 那么dd($var) is probably the fastest to type
。