Laravel Eloquent 查询返回非对象

Laravel Eloquent query returning non object

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

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

我得到 error/notice "Trying to get property 'user' of a non-object"。我如何摆脱这个错误?

预加载将此操作减少到仅 2 个查询


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

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

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

$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