mehrere verwandte Parameter in einer Route binden ich zwei miteinander verwandte Modelle Anime, Folge habenwie in Laravel
und ich habe die RouteKeyName für beide
In Anime Modell geändert:
public function getRouteKeyName()
{
return 'slug';
}
In Episode Modell:
public function getRouteKeyName()
{
return 'ep_num'; // episode number
}
eine Folge zu sehen, verwende ich diese:
Routen/web.php
Route::get('play/{anime}/{episode}', '[email protected]');
EpisodeController.php
public function index(Anime $anime, Episode $episode)
{
return view('play')->with([
'anime' => $anime,
'episode' => $episode
]);
}
zum Beispiel, wenn ich diesen Link
.../play/naruto/10 haben
dann 10 von Routenmodell Bindung i wird die erste Folge mit ep_num haben = 10
Stattdessen möchte ich die Episode mit ep_num haben = wenn
anime_id = $anime->id
ist es eine Möglichkeit, diese
innen RouteServiceProvider zu tunich will dies sowohl für alle Strecken anzuwenden anime und Folge enthalten, wie:
Route::delete('anime/{anime}/episode/{episode}/delete', '[email protected]');
Route::get('anime/{anime}/episode/{episode}/edit', '[email protected]');
Route::put('anime/{anime}/episode/{episode}/edit', '[email protected]');
SOLUTION
dies innerhalb RouteServiceProvider
Route::bind('episode', function() {
$episode = \App\Models\Episode::where('ep_num', request()->episode);
if (request()->route()->hasParameter('anime')) {
$anime= \App\Models\Anime::where('slug', request()->anime)->first();
$episode = $episode->where('anime_id', $anime->id);
}
return $episode->firstOrFail();
});
Es ist nicht ganz klar, was Sie wollen. Was meinst du mit "anime_id = $ anime-> id"? –
anime_id ist ein Fremdschlüssel in der Episodentabelle und ich möchte, dass er der ID des Animes in der Route entspricht. –
Ok, und ist die Beziehung in deinem 'Episoden'-Modell für Anime, nur 'Anime' genannt? –