Laravel Eloquent возвращает не объект - PullRequest
0 голосов
/ 19 мая 2019

Я пытаюсь уменьшить количество выполненных SQL-запросов. У меня есть пост, где я хочу найти автора этого поста и разместить его на странице. Чтобы уменьшить количество запросов SQL, у меня есть следующий код:

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

Я получаю сообщение об ошибке / уведомление "Попытка получить свойство 'user' для необъекта". Как мне избавиться от этой ошибки?

Ответы [ 3 ]

2 голосов
/ 19 мая 2019

Стремительная загрузка сокращает эту операцию до 2 запросов


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

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

0 голосов
/ 19 мая 2019

Ошибка может быть из-за того, что сообщение (или первое сообщение), к которому вы пытаетесь получить доступ, не связано ни с одним из пользователей. Вы можете попробовать это, чтобы избежать ошибки.

$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
0 голосов
/ 19 мая 2019

Если у вас есть пост (один пост), возможно, лучше использовать метод поиска.Что-то вроде:

$post = Post::find($id);
return $post->user;
...