【问题标题】:Laravel 5.3 trying to get property of non-objectLaravel 5.3 试图获取非对象的属性
【发布时间】:2020-08-28 01:57:10
【问题描述】:

我刚刚将我的应用程序更新到 5.3 版,并且在许多路线中我得到了 trying to get property of non-object 例如,我有一个名为 post 的资源和另一个名为 Article 的资源,其中每个帖子都可以有一篇文章。每篇文章都有一位作者。当我这样做时

$article->post->writer;

我收到trying to get property 'writer' of non-object

在从 5.2 更新之前,这条路线以及其他路线都运行良好。我在这里错过了什么吗?作曲家更新成功后我应该做些什么吗?

编辑:文章、帖子和作者都存在于数据库中。当我尝试返回 $article 时,我得到了这个。

{
    "article": []
}

当我切换回 laravel 5.2 时,我得到了正确的文章

编辑2:它是路由投标问题。我正在使用隐式模型绑定,所以当我将文章的 ID 传递给我的路由时,Laravel 会获取资源。但现在显然它没有这样做。我按照此处的说明进行绑定 https://laravel.com/docs/5.3/upgrade#upgrade-5.3.0 但 Laravel 仍然无法获取文章

【问题讨论】:

  • 你的文章没有帖子,$article->postnull
  • 正如错误提示的那样,您正在尝试获取非对象的 writer 属性。可能为空。检查您的“文章 -> 帖子”关系。如果您找不到问题,您应该提供更多详细信息
  • 你也应该添加你的关系代码。

标签: laravel laravel-upgrade


【解决方案1】:

这是名称绑定问题。 Laravel 5.3 需要在 kernel.php 以及组路由 https://laravel.com/docs/5.3/upgrade#upgrade-5.3.0 中进行一些配置 该组应该有 'middleware' => ['bindings']

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-22
    • 2017-03-20
    相关资源
    最近更新 更多