Попытка получить свойство 'title' необъекта, используя PHP Laravel - PullRequest
0 голосов
/ 11 февраля 2020

Я перепробовал все и получаю сообщение об ошибке. Когда я смотрю на URL, он показывает целое число и должен отображать заголовок сообщения. Я думаю, что проблема есть, но я не могу понять, как это исправить.

Это мой контроллер и просмотр кода:

    public function getSingle($slug) {
        $post = Post::where('slug', '=', $slug)->first();
        return view('oilnotes.single')->withPost($post);

    }


<div class="row">
    <div class="col-md-8 col-md-offset-2">
        <h1>{{ $post->title }}</h1>
        <p>{{ $post->body }}</p>
    </div>
</div>

Ответы [ 4 ]

2 голосов
/ 11 февраля 2020

Вы должны убедиться, что $post = Post::where('slug', '=', $slug)->first(); не пусто, вы можете увидеть, что внутри, используя dd($post);. Я бы также предложил использовать ->FirstOrFail(); вместо ->first();. ->first(); возвращает первую запись, найденную в базе данных. Если подходящей модели не существует, возвращается null. ->FirstOrFail(); возвращает первую запись, найденную в базе данных. Если подходящей модели не существует, выдается ошибка 404 not found

0 голосов
/ 11 февраля 2020

используйте firstOrFail (). Он будет перенаправлен на 404, если не найдена запись для пули.

public function getSingle($slug) {
    $post = Post::where('slug', '=', $slug)->firstOrFail();
    return view('oilnotes.single')->withPost($post);

}
0 голосов
/ 11 февраля 2020

Вы можете использовать нулевой оператор объединения ?? (введен в PHP 7). Он используется для проверки, установлено ли значение или равно нулю, или, другими словами, если значение существует и не равно нулю, то он возвращает первый операнд, в противном случае он возвращает второй операнд.

<h1>{{ $post->title ?? 'DEFAULT' }}</h1>
<p>{{ $post->body ?? 'DEFAULT' }}</p>
0 голосов
/ 11 февраля 2020

используйте compact

в вашем контроллере

public function getSingle($slug) {
    $post = Post::where('slug', '=', $slug)->first();
    return view('oilnotes.single', compact('post'));
 }

в вашем блейд-файле

{{ $post->title }}
{{ $post->body }}

ИЛИ

{{ $post->title ?? 'NULL' }}
{{ $post->body ?? 'NULL' }}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...