Как изменить этот маршрут Laravel таким образом, чтобы медиа выполнял поиск по идентификатору, но в URL-адресе он отображал слаг?

Благодаря этому ниже код URL выглядит следующим образом: /downloadpage/34
Я хочу сделать URL оптимизированным для SEO, например: /downloadpage/slug

В таблице ‘media’ есть столбец slug, Как изменить в этом коде, что медиа ищет по идентификатору, но в URL он показывает слаг?

Файл rout.php:

Route::get('/downloadpage/{id}', [
'as' => 'downloadpage', 'uses' => 'DownloadController@index'

Файл DownloadController.php:

public function index($id){
$images   = DB::table('media')->where("id", "=", $id)->get();
$popular  = DB::table('media')->orderBy('count_download', 'DESC')->take(5)->get();
$mostlike = DB::table('media')->orderBy('count_like', 'DESC')->take(5)->get();
$alsolike = DB::table('media')->orderByRaw("RAND()")->where("id", "!=", $id)->take(3)->get();
$settings = Setting::first();
$previous = DB::table('media')->where('id', '<', $id)->max('id');
$next     = DB::table('media')->where('id', '>', $id)->min('id');
$imgshare = DB::table('media')->where("id", "=", $id)->first();
return view('download.downloadpage', ['images'=>$images , 'popular'=>$popular, 'mostlike'=>$mostlike, 'alsolike'=>$alsolike, 'settings'=>$settings, 'previous'=>$previous, 'next'=>$next, 'imgshare'=>$imgshare]);
}

0

Решение

Что-то вроде того.

Маршрут:

Route::get('/downloadpage/{slug}', [
'as' => 'downloadpage', 'uses' => 'DownloadController@index'

контроллер:

public function index($slug){
$images   = DB::table('media')->where("slug", "=", $slug)->first();
$popular  = DB::table('media')->orderBy('count_download', 'DESC')->take(5)->get();
$mostlike = DB::table('media')->orderBy('count_like', 'DESC')->take(5)->get();
$alsolike = DB::table('media')->orderByRaw("RAND()")->where("id", "!=", $id)->take(3)->get();
$settings = Setting::first();
$previous = DB::table('media')->where('id', '<', $images->id)->max('id');
$next     = DB::table('media')->where('id', '>', $images->id)->min('id');
return view('download.downloadpage', ['images'=>$images , 'popular'=>$popular, 'mostlike'=>$mostlike, 'alsolike'=>$alsolike, 'settings'=>$settings, 'previous'=>$previous, 'next'=>$next, 'imgshare'=>$images]);
}

Я изменил $images = DB::table()...->first() строка до конца ->first(), так что вы не получите массив. Вам, вероятно, нужно будет что-то изменить в представлении.

Я настоятельно рекомендую ознакомиться с базовой документацией Laravel для маршрутизация, что объясняет это ясно. И переживает красноречивый документация и преобразование вашего DB звонки на модели.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]