Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在laravel中绑定一条路由中的多个相关参数_Php_Laravel_Laravel Routing - Fatal编程技术网

Php 如何在laravel中绑定一条路由中的多个相关参数

Php 如何在laravel中绑定一条路由中的多个相关参数,php,laravel,laravel-routing,Php,Laravel,Laravel Routing,我有两个相关的模型,动画,插曲 我已经为他们两个更改了RouteKeyName 在动画模型中: public function getRouteKeyName() { return 'slug'; } 在插曲模式中: public function getRouteKeyName() { return 'ep_num'; // episode number } 要查看一集,我使用以下命令: routes/web.php eposodecontroller.php 例如,如果

我有两个相关的模型,动画,插曲

我已经为他们两个更改了RouteKeyName

在动画模型中:

public function getRouteKeyName() 
{
    return 'slug';
}
在插曲模式中:

public function getRouteKeyName()
{
    return 'ep_num'; // episode number
}
要查看一集,我使用以下命令:

routes/web.php

eposodecontroller.php

例如,如果我有这个链接

…播放/鸣人/10

然后,通过使用路由模型绑定,我将拥有ep_num=10的第一集

相反,我想让ep_num=10的插曲

anime_id = $anime->id
在RouteServiceProvider内部有什么方法可以做到这一点吗

我想将此应用于包含动画和插曲的所有路线,例如:

Route::delete('anime/{anime}/episode/{episode}/delete', 'EpisodeController@destroy');
Route::get('anime/{anime}/episode/{episode}/edit', 'EpisodeController@edit');
Route::put('anime/{anime}/episode/{episode}/edit', 'EpisodeController@update');

你可以这样做:

Route::bind('episode', function ($slug) {

    $episode = Episode::where('slug', $slug);

    if (request()->route()->hasParameter('anime')) {
        $episode->whereHas('anime', function ($q) {
            $q->where('slug', request()->route('anime'));
        });
    }

    return $episode->firstOrFail();
});

希望这有帮助

您可以执行以下操作:

Route::bind('episode', function ($slug) {

    $episode = Episode::where('slug', $slug);

    if (request()->route()->hasParameter('anime')) {
        $episode->whereHas('anime', function ($q) {
            $q->where('slug', request()->route('anime'));
        });
    }

    return $episode->firstOrFail();
});

希望这有帮助

不太清楚你在找什么。动画id=$anime->id是什么意思?动画id是剧集表中的外键,我希望它等于routeOk中动画的id,并且你的动画剧集模型中的关系就是动画吗?是的,它叫做动画。我不太清楚你在追求什么。动画id=$anime->id是什么意思?动画id是剧集表中的外键,我希望它等于routeOk中动画的id,并且在你的动画剧集模型中的关系只是叫动画吗?是的,叫动画这对我帮助很大,谢谢这对我帮助很大,谢谢
Route::bind('episode', function ($slug) {

    $episode = Episode::where('slug', $slug);

    if (request()->route()->hasParameter('anime')) {
        $episode->whereHas('anime', function ($q) {
            $q->where('slug', request()->route('anime'));
        });
    }

    return $episode->firstOrFail();
});