我正在为我正在进行的项目使用 Laravel 4。我需要从帖子中检索第一条评论。我使用以下代码来这样做。
$comments = Comment::where('post_id', $post->id)->first();
这成功地检索了第一条评论(我知道这是因为我用 print_r
编辑了 $comments
并且它返回了所有正确的信息)。
然而,下面这行代码触发了错误__toString() must not throw an exception
<td>{{$comments->content}}</td>
当我 print_r
-ed 时,它返回了字符串类型,并且也返回了正确的字符串。为什么它甚至会尝试将 $comments->content
转换为类型字符串,因为它已经是一个字符串?
最佳答案
根据您提供的信息和我使用 Laravel 的经验,我敢打赌导致异常的代码行不是您在问题中提出的行。
<td>{{$comments->content}}</td>
此异常是提示 View 抛出异常。如果这一行是问题所在,您会得到一个关于 $comments->content 如何无法转换为字符串的更具描述性的异常。您还已经测试过它确实是一个字符串。
我建议找到您的“View”对象被回显到 View 的位置并像这样更改它。
{{ View::make('yourbladefile')->__tostring() }}
这通过提供更准确和信息更丰富的异常对我有用。有关您的异常的更多信息,您应该查看 Why it's impossible to throw exception from __toString()?
这是我最初的想法。我知道这不是一个完美的答案,所以请让我知道这是否可行,如果事实并非如此,我会更新我的答案。祝你好运。
关于php - __toString() 在使用字符串时不得抛出异常错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21104373/