Свойство [название] не существует в этом экземпляре коллекции laravel framework - PullRequest
0 голосов
/ 10 июля 2020

Я показываю данные из базы данных для show.blade. php но эта проблема показывает следующий код: BlockController

public function show(Blog $id)
    {
        //
        $blogs = Blog::findOrfail($id);
        return view('blog.show', compact('blogs'));
    }

show.blade. php

@section('content')
    
        <h3>{{ $blogs->title }}</h3>
        
@endsection

вывод dd ($ blogs): image Я пробовал все варианты, которые у меня есть, но все еще не работает ..

Ответы [ 2 ]

1 голос
/ 10 июля 2020

С этой сигнатурой метода $id является экземпляром модели. Eloquent Models реализует Illuminate\Contracts\Support\Arrayable. Если вы передадите что-то Arrayable или массив в find, который вызывает findOrFail, он будет рассматривать это так, как будто вы ищете несколько записей, и вернет коллекцию.

У вас есть Коллекция, а не экземпляр модели.

Если бы ваша подпись метода не вводила намек на модель, это имело бы больше смысла, поскольку у вас был бы 'id'. Если вы вводите модели хинтинга для этих методов, обычно вы будете использовать привязку модели маршрута.

Привязка модели маршрута:

public function show(Blog $blog)
{
    // $blog is the matching record
}

Без привязки модели и просто получение параметра:

public function show($blog)
{
    // $blog is just the 'id' or what ever you decided to pass in the URL
}

У ваших маршрутов есть параметр с именем blog, потому что ваш ресурс назван «блог». Чтобы неявная привязка модели маршрута существовала, вы должны сопоставить имя параметра с именем параметра в подписи.

0 голосов
/ 10 июля 2020

В вашей функции show(Blog $id) $ id имеет экземпляр Blog :: class

Что вам нужно делать дальше $blogs = Blog::findOrfail($id->id);

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