2016-09-29 117 views
1

我有,当我检查的问题,如果集合为空或不是,Laravel给我的错误调用未定义功能Laravel

“调用未定义的方法 照亮\数据库\查询\生成器::的isEmpty( )”。

芹苴它在其他控制器的工作,但是当控制器处于子文件夹中突然停止工作。

这里是我的代码:

$group = UserGroup::where('id', $request->group_id)->first(); 
    if($group->isEmpty()){ // I get error from here 
     return redirect()->back(); 
    } 
+0

没有定义功能,u需要检查它'的var_dump($组);' – devpro

+0

我得到相同的 - >查找() 的isEmpty()被描述为返回true或false,不产生错误。 它可能从5.2中的Eloquent中移除了吗? – Mladen

回答

0

一个在PHP调试的最流行的方式仍然是相同的 - 在浏览器中显示的变量,希望能找出错误是什么。 Laravel具有显示变量的特定短助手功能 - dd() - 代表“Dump and Die”,但它并不总是方便。什么是其他选项?

注意下面提到的方法是寻找到我们班的失败,什么都可用我们的查询执行后的情况。打印之前我们的预期结果是什么。此方法是根据is要求找出错误的最佳方法。

首先,dd()有什么问题?好吧,让我们说,我们想从数据库表中的所有行和甩掉他们:

$methods = PaymentMethod::all(); 
dd($methods); 

我们会看到这样的:

enter image description here

但你明白了吧 - 看到的实际值,我们需要再点击三次,如果没有这些操作,我们看不到完整的结果。起初我想 - 也许dd()函数有一些参数呢?不幸的是,因此,让我们来看看其他的选择:

的var_dump()和死亡():

$methods = PaymentMethod::all(); 
var_dump($methods); 
die(); 

我们现在看到的:表现出任何类型的数据的

好老PHP方式

enter image description here

但还有更多可读的方式。

另一个PHP内置函数print_r()对我们一个完美的描述:

$methods = PaymentMethod::all(); 
print_r($methods); 
die(); 

然后去查看浏览器的源代码“打印关于变量人类可读的信息” ...我们得到这样的:

现在

enter image description here

,我们可以很容易地阅读的内容,并尝试进行调查错误。

此外,print_r()函数有另一个可选参数与真/假值 - 你不能只回应该变量,但将其作为字符串返回到另一个变量。然后,您可以将多个变量合并为一个,例如可能将其记录在某处。

所以,在这样的情况下,dd()不是那么方便 - PHP原生函数来解救。但是,如果你想让脚本从字面上“转储一个简单的变量并且死掉” - 然后dd($var) is probably the fastest to type