Свойство [title] не существует в этом экземпляре коллекции.Laravel 5.5 - PullRequest
0 голосов
/ 11 сентября 2018

Я слежу за этим уроком с 23 до 26 минут https://www.youtube.com/watch?v=9y6Swfb8EAM&list=PL9fcHFJHtFaai-ch9icvQOU69XzsKJJtD&index=11

Я пытаюсь передать данные для просмотра, используя следующий код в файле контроллера:

public function show(Post $post)
{
    $post = Post::find($post);
    return view('posts.show', compact('post'));
}

Когда я пытаюсь показать код, как показано ниже, (это show.blade.php)

<h2>{{$post->title}}</h2>
<p>{{$post->body}}</p>

сказано

Property [title] does not exist on this collection instance. (View: E:\xampp\htdocs\lweb2\resources\views\posts\show.blade.php)

1 Ответ

0 голосов
/ 11 сентября 2018

Laravel автоматически разрешает модели Eloquent, определенные в маршрутах или действиях контроллера, чьи имена переменных с подсказками типов соответствуют имени сегмента маршрута

В этом случае вам не нужно использовать find(), поскольку Laravel автоматически разрешит модель для вас из-за Неявного связывания модели

Попробуйте:

public function show(Post $post)
{
    return view('posts.show', compact('post'));
}

Причина, по которой find() вызвал проблему, заключается в том, что модель Eloquent реализует интерфейс Arrayable, и это заставит метод find() предположить, что вы пытаетесь найти более одной модели, и в конечном итоге вернет коллекция.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...