Вы можете использовать Привязка модели маршрута , чтобы маршруты находили вашу модель на основе предоставленного ключа.
Для вашей модели Post
потребуется добавить следующий метод:
public function getRouteKeyName()
{
return 'slug';
}
Затем в ваших маршрутах вы можете просто ссылаться на модель напрямую, и привязка произойдет автоматически:
public function post(App\Post $post)
{
$comments = Comment::where('post_id',$post->id)->get();
return view('content.post',compact('post','comments'));
}
Это позволит вам использовать следующий маршрут:
Route::get('post/{post}', 'PagesController@post')->name('post.show');
Теперь, кроме того, чтобы упростить вашу ссылку на комментарии, добавьте их как отношения к вашей Post
модели:
public function comments()
{
return $this->hasMany(Comment::class);
}
и вашей Comment
модели:
public function post()
{
return $this->belongsTo(Post::class);
}
Это позволит вам еще больше сократить метод управления:
public function post(App\Post $post)
{
return view('content.post',compact('post'));
}
и вместо этого в режиме Blade сделайте следующее:
@foreach($post->comments as $comment)
From: {{ $comment->name }} blah blha
@endforeach