【问题标题】:Laravel Eloquent query returning non objectLaravel Eloquent 查询返回非对象
【发布时间】:2019-05-19 00:58:49
【问题描述】:

我正在尝试减少执行的 SQL 查询的数量。我有一个帖子,我想在其中获取该帖子的作者并将其列出在页面上。为了减少 SQL 查询的数量,我有以下代码:

$posts = Post:all();
$posts->load('user');
$posts->first()->user;

我收到错误/通知“尝试获取非对象的属性‘用户’”。我该如何摆脱这个错误?

【问题讨论】:

  • 如果$posts->first() 返回null,你会得到这个。

标签: laravel eloquent eager-loading


【解决方案1】:

急切加载将此操作减少到只有 2 个查询


    public function example()
    {
        $posts = Posts::with('user')->get();

        foreach ($posts as $post) {
            echo $post->user->name;
        }
    }

【讨论】:

    【解决方案2】:

    该错误可能是因为您尝试访问的帖子(或第一个帖子)与任何用户都不相关。你可以试试这个来避免错误。

    $posts = Post:all();
    $posts->load('user');
    // Try any one of below.
    1) $posts->first()->user ?? '';
    2) $posts->first()->user or ''; // in Laravel 5.5 or below
    

    【讨论】:

      猜你喜欢
      • 2016-02-18
      • 2021-06-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-20
      • 2018-07-02
      • 1970-01-01
      • 2021-06-30
      相关资源
      最近更新 更多