User::__toString()不能抛出异常


Laravel/Sentry EloquentUser::__toString() must not throw and exception

有一个奇怪的问题。我开发了一个门户网站,直到今天,它在产品和开发环境中都运行良好。今天,在运行了一个作曲家更新后,在开发环境下一切都很好,但当我把它推到生产环境时,我的一个页面停止了工作。该页面允许我调出一个用户帐户并修改某些字段(非常直接)。

作为一个例子,我在控制器中创建了一个测试函数来吐出特定的用户信息:
public function getTest(){
    $user = Sentry::findUserByLogin('XXXXX');
    echo $user;
}

当我在开发端运行这个函数时,它显示了它应该显示的所有信息。当在生产端,我得到这个错误:

production.ERROR: 500 - Method Cartalyst'Sentry'Users'Eloquent'User::__toString() must not throw an exception @ /employees/admin/test
exception 'Symfony'Component'Debug'Exception'FatalErrorException' with message 'Method Cartalyst'Sentry'Users'Eloquent'User::__toString() must not throw an exception' in E:'sites'yaya.com'portal'app'src'employees'controllers'admin.php:0
Stack trace:
[internal function]: Illuminate'Exception'Handler->handleShutdown()
{main} [] []

我没有修改过Sentry或Eloquent内部的任何内容。

你知道是什么导致了这个错误吗?在生产方面,如果我做一个var_dump(user),它不会抛出错误,我可以看到保护字段内的一切。或者如果我用echo $user->username,它也可以正常工作。问题是我需要返回用户信息以及组的用户是在我的JS显示它在我的屏幕上取决于下拉选择的用户。

终于想通了!不知道发生了什么,但我开始比较数据库中的数据行,发现了一些差异。打开设计视图,可以肯定的是,在生产环境中有几个字段与我的开发环境不同。他们将"datetime"设置为"smalldatetime",不确定是什么原因导致的,但将其更改为"datetime",一切都开始工作了。

谢谢狼人的帮助!

产生此错误的最常见情况是输入错误,当,例如,而不是

{{ $user->id }}

人类型

{{ $user }}

错误清楚地表明toString方法被调用了