سلام دوستان.
با استفاده از Route Model Binding میخوام اطلاعات یک مقاله رو نشون بدم ولی نه عکس مقاله رو نشون میده و نه کامنت های مربوط به اون مقاله.
Route
Route::get('/article/{articleSlug}' , 'ArticleController@single');
Controller
public function single(Article $article) {
$article->increment('viewCount');
$comments = $article->comments()->where('parent_id' , 0)->latest()->get();
return view('Home.article' , compact('article' , 'comments'));
}
سلام تیکه کدی که نوشتید باید به این شکل باشه
Route::get('/article/{article}' , 'ArticleController@single');
یا اگه قراره برحسب فیلد خاصی در دیتابیستون باشه مثلا slug باید به این شکل باشه
Route::get('/article/{article:slug}' , 'ArticleController@single');
@mr.hamze00
تشکر از شما دوست عزیز.
به صورت
Route::get('/article/{article:slug}' , 'ArticleController@single');
حل شد.
امکانش هست یه توضیحی راجب این تیکه بدین.
{article:slug}
و چرا به صورتی که خودم تعریف کردم جواب نمیداد؟
وقتی از route model binding استفاده میکنین باید convention رو رعایت کنید اینکه توی روت شما articleSlug میگید و توی مدل $article درست نیست
او این کدی که دوستمون داد فیچر جدید لاراول 7 هستش
خواهش می کنم 🙏
اون صورتی که شما نوشته بودی عملا اشتباه بود وقتی کد به این شکل نوشته میشه
Route::get('/article/{article}' , 'ArticleController@single');
پیشفرض میره id جدول رو چک می کنه و اگه بود رکورد رو برمیگردونه
تو مدل دوم ینی این
Route::get('/article/{article:slug}' , 'ArticleController@single');
که تو لاراول 7 اضافه شده به شما این امکان رو میده که بر اساس یک فیلد خاص در دیتابیستون route model binding رو انجام بدین
داکیومنت کامل ترش اینجا هست
https://laravel.com/docs/7.x/routing#route-model-binding
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟