Я пару недель изучаю Laravel и столкнулся с проблемой, на которую я не могу найти ответ самостоятельно или через Интернет.
Я создаю веб-сайт каталога с URL-адресами, структурированными так:
- directory.co.uk / parks
- directory.co.uk / parks / {county-name}
- directory.co.uk / parks / {county-name} / {park-name}
Поскольку {park-name} не уникален, я пытаюсьвернуть страницу для отдельного парка. Контроллер должен искать county
. id
, используя county
. slug
и , затем park
. id
, используя park
. county_id
иpark
. slug
.
У меня есть маршруты в файле web.php, такие как:
Route::get('/parks','ParksController@index')->name('parks');
Route::get('/parks/{county}/{park}','ParksController@show')->name('park');
У меня есть модели парков и округов, а также (отношения отношения ownTo и hasMany установлены междудва).
У меня это есть в обеих моделях:
public function getRouteKeyName()
{
return 'seo_url';
}
Тогда в моем ParksController я в растерянности. В настоящее время у меня есть:
public function show(Counties $county, Parks $park)
{
//return $park;
//dd($park);
return view('parks.park', ['park'=>$park]);
}
Я также пробовал не-Eloquent способ:
public function show($county_slug,$park_slug)
{
$county = DB::table('counties')->where('seo_url',$county_slug)->get();
$county_id = $county->pluck('id');
$park = DB::table('parks')->where('county_id', $county_id)->where('seo_url', $park_slug)->get();
//dd($county_id);
//return $park;
return view('parks.park', ['park'=>$park]);
}
Это возвращает ошибку 404. Любая помощь приветствуется. (Я много читал о привязке модели Route, но не вижу примеров, подобных моему.)