404 не найдено при отображении данных с помощью slug в laravel

#laravel

#laravel

Вопрос:

Я пытаюсь показать сообщение с помощью slug, но всегда получаю 404 not found.

Контроллер

     public function show($slug)
{
    $post = Post::findorFail($slug);
    $tags = Tag::all();

    return view('page.detail', compact('post', 'tags'));
}
 

Маршрут

 Route::get('/post/{slug}', 'PageController@show');
 

Вид

 @foreach($post as $item)
<a href="/post/{{$item->slug}}" class="btn-custom">Read More <span
 class="ion-ios-arrow-forward">
@endforeach
 

Спасибо

Ответ №1:

findOrFail() проверяет первичный ключ вашей Post.php модели, что обычно id , поэтому ваш запрос в настоящее время:

SELECT * FROM posts WHERE id = 'contents-of-slug'

Ваш код должен работать, если вы выполните следующие действия:

 $post = Post::where('slug', $slug)->firstOrFail();
 

Смотрите Документацию; он показывает этот точный пример:

https://laravel.com/docs/8.x/eloquent#not-found-exceptions