سلام
من با توجه به داکیومنت این روش رو استفاده کردن که به نظرم خیلی راحته :
1- روت ارسالی از سمت view رو اینجوری تعریف کردم
<a href="{{ route('videos.show', $video) }}"><img src="{{ $video->thumbnail }}" alt="">a>
یعنی مستقیم خود آبجکت کلیک شده رو فرستادم سمت روت video.show به جای اینکه بیام آیدیش رو بفرستم یا اینکه اسلاگ رو بفرستم !!
2 - حالا اینجا داخل روتها با توجه به اینکه آبجکت فرستادیم دستمون بازه و هر چی رو که بخواییم میتونیم اون بالا داخل url نشون بدیم به این صورت :
Route::get('/videos/{video:slug}', [VideoController::class, 'show'])->name('videos.show');
Route::get('/videos/{video:id}', [VideoController::class, 'show'])->name('videos.show');
3 - تازه سمت کنترلر هم میتونیم خود آبجکت کلیک شده رو دریافت کنیم و بفرستیم هر جا که میخوایم :
public function show( Video $video)
{
return view('videos.show', compact('video'));
}
**** اینجوری دیگه لازم نیست مدل رو تغییر بدیم و فانکشن ()getRouteKeyName رو بهش اضاف کنیم و ازش بخواییم که ; 'return 'slug
درست میگم ؟؟؟؟؟