如何在Laravel上解决错误“试图获取非对象的属性”

时间:2017-05-26 11:52:37

标签: laravel error-handling

我正在尝试从数据库中获取列表,但页面显示错误“试图获取非对象的属性”请帮助我,我已经堆积在此,这里代码生成错误:{{1} }

及以下是它自己的文件的扩展代码。

$status = ($employee->Profile->date_of_leaving == null) ? '<span class="label label-success">active</span>' : '<span class="label label-danger">in-active</span>';

3 个答案:

答案 0 :(得分:1)

当您调用非对象变量的属性(可能为null,字符串或其他类型)时,会发生此错误。在此代码中,您尝试获取date_of_leaving的{​​{1}}属性,而$employee->Profile不是对象。因此,您可以通过调用property_exists函数来检查对象是否具有该属性:

$employee->Profile

这一行:

$status = (property_exists($employee, 'Profile') && property_exists($employee->Profile, 'date_of_leaving') && $employee->Profile->date_of_leaving == null) ? '<span class="label label-success">active</span>' : '<span class="label label-danger">in-active</span>';

答案 1 :(得分:0)

您提到的错误告诉我们您正在尝试获取不是对象的变量的属性。

产生错误的代码行是: ($employee->Profile->date_of_leaving == null)

$employee$employee->Profile都可以返回null 但是在你的代码中,就在这一行之前,你写了:$designation = $employee->Designation;,如果$employee不是一个对象,它就会失败。

通过消除$employee->Profile是脚本失败的原因。它可能没有设置或不是对象:)

答案 2 :(得分:0)

此错误是由于数据库中没有数据,但您尝试获取它,因此您需要在每个数据库中检查它是否为null。 我认为这段代码可以帮助你。

$status = (($employee->Profile) && ($employee->Profile->date_of_leaving)) ? 
           '<span class="label label-danger">in-active</span>' : 
           '<span class="label label-success">active</span>';