Laravel如何更改passport表名称以大写字母开头?

Laravel如何更改passport表名称以大写字母开头?,laravel,laravel-7,laravel-passport,Laravel,Laravel 7,Laravel Passport,我正在尝试构建和API,我正在使用passport进行身份验证,问题是我希望所有表名以大写字母开头,例如“Oauth”而不是“Oauth”,如何在不直接修改供应商文件的情况下实现这一点?您不能直接修改表名,但可以修改passport使用的模型名。 如果查看PassportClass,则存在静态类变量: /** * The auth code model class name. * * @var string */ public stati

我正在尝试构建和API,我正在使用passport进行身份验证,问题是我希望所有表名以大写字母开头,例如“Oauth”而不是“Oauth”,如何在不直接修改供应商文件的情况下实现这一点?

您不能直接修改表名,但可以修改passport使用的模型名。 如果查看
Passport
Class,则存在静态类变量:


    /**
     * The auth code model class name.
     *
     * @var string
     */
    public static $authCodeModel = 'Laravel\Passport\AuthCode';

    /**
     * The client model class name.
     *
     * @var string
     */
    public static $clientModel = 'Laravel\Passport\Client';

    /**
     * The personal access client model class name.
     *
     * @var string
     */
    public static $personalAccessClientModel = 'Laravel\Passport\PersonalAccessClient';

    /**
     * The token model class name.
     *
     * @var string
     */
    public static $tokenModel = 'Laravel\Passport\Token';

    /**
     * The refresh token model class name.
     *
     * @var string
     */
    public static $refreshTokenModel = 'Laravel\Passport\RefreshToken';
等等。 passport使用这些模型与数据库通信。您可以制作自己的模型并扩展Passport模型

例如:

class MyOwnAuthCodeModel extends Laravel\Passport\AuthCode {
    
    public $table = 'Auth_codes';

}
然后在Passport
ServiceProvider
文件中,您必须更改型号:

Passport::$clientModel = '\App\Models\MyOwnAuthCodeModel';
...
然后,您必须创建迁移文件以重命名所有passport表:

Schema::rename('oauth_codes', 'Oauth_codes');
...
如果您不想在供应商迁移和模型中更改表名,那么这些步骤就太多了

它可以正常工作了

请记住,您必须对所有passport表和模型执行此操作


当您安装passport时,它会生成一个迁移文件,转到该迁移文件,并根据您的需要更改表的名称。我相信您最终会遇到很多问题。实际原因是什么?如何访问PassportServiceProvider?我的意思是“那么在PassportServiceProvider文件中,您必须更改模型”在哪个文件中?没有护照服务提供商哦,对不起。我的意思是
RouteServiceProvider
AppServiceProvider
取决于您将passport路由放置在何处