【问题标题】:Laravel Conditional route key using getRouteKeyNameLaravel 条件路由键使用 getRouteKeyName
【发布时间】:2020-03-22 01:18:45
【问题描述】:

我在桌子上的主键是id,另一方面我有一个名称为slug的列,它可以为空,我想通过slug设置我的模型的路由键当slug 列已填充且不为空 否则将其保留为id,我尝试了这些:

public function getRouteKeyName()
{
    if ($this->slug) return 'slug';

    return 'id';
}

问题是$this 只返回该方法上的模型实例,不会返回请求中涉及的当前模型,我也尝试了request()->route('post'),但没有成功。

【问题讨论】:

    标签: laravel


    【解决方案1】:

    这可能不是最好的方法,但我会这样做:

    路线

    Route::get('/somepath/{variable}', 'SomeController@index');
    

    控制器

    public function index($variable)
    {
        $model = Model::where('slug', $variable)->first();
    
        if (null === $model) {
            $model = Model::where('id', $variable)->first();
        }
    
        // other logic
    }
    

    【讨论】:

    • 不适合 REST 路由,因为我应该为每个操作都这样做。
    • 您可以将模型移入独立方法并在构造函数中使用它
    猜你喜欢
    • 2020-08-23
    • 1970-01-01
    • 2021-09-30
    • 2012-11-06
    • 2016-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-08
    相关资源
    最近更新 更多