【问题标题】:(laravel) Is it possible to use method injection by passing a field other than the id?(laravel)是否可以通过传递 id 以外的字段来使用方法注入?
【发布时间】:2017-02-27 02:35:05
【问题描述】:

我对 Laravel 有点陌生,并试图从它的方法(依赖)注入中获得最大收益,同时还旨在保持良好的 url 结构(用于 SEO)。

情况如下: 我正在调用一个附加到其末尾的变量的路由,如下所示: www.mywebsite.com/user/id

这是通过如下方法发送给控制器的:

public function listUsers(User $user){
   dd($user);
}

这很好用;如果我访问 www.mywebsite.com/user/3,Laravel 会自动获取 id = 3 的用户

但为了获得更好的 SEO,我需要将该网址更改为如下所示:www.mywebsite.com/users/nickname。

是否可以以类似于我目前使用的方式使用方法注入,但使用 id 以外的另一个字段(在本例中为昵称)从数据库中获取 User 对象?

如果可以,我该怎么做?

我可以手动完成,但我想充分利用 Laravel。

感谢您的宝贵时间,而且,我正在学习英语,所以如果您是英语母语人士或英语流利,如果您指出我的语法错误,我将不胜感激(简要地不扭曲帖子) .

布鲁诺

【问题讨论】:

    标签: php laravel eloquent laravel-5.3 laravel-5.4


    【解决方案1】:

    在这种情况下,您需要在 User Eloquent 模型中定义以下方法:

    public function getRouteKeyName()
    {
        return 'nickname';
    }
    

    您可以在Route Model binding 文档中了解更多信息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-11
      • 1970-01-01
      相关资源
      最近更新 更多