php - __toString() 在使用字符串时不得抛出异常错误

标签 php laravel

我正在为我正在进行的项目使用 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/

相关文章:

php - 在 Laravel 中选择多列表单数据库

php - 如何使用 Laravel 获取银行中的 BMP 图像并将其显示在 View 中?

php - mysqli 从数据库中获取信息

php - 发送电子邮件在浏览器中测试虚假数据

php - 资源 Controller 的 Laravel 命名路由

Laravel Elixir Sass 编译 - .sass 文件

php - 关于elasticsearch-php的使用

php - Route() 不能与 Route::enableFilters() 一起使用

通过 API 进行 Laravel Echo 身份验证

php - 正则表达式删除除表情符号以外的所有非字母数字字符