Laravel 如何更改护照 table 姓名以大写字母开头?

Laravel how to change passport table names to start with capital letters?

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

您不能直接修改table 名称,但您可以修改passport 使用的型号名称。 如果你看 Passport Class 有静态 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 模型。

例如:

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

}

然后在 Passport ServiceProvider 文件中你必须更改模型:

Passport::$clientModel = '\App\Models\MyOwnAuthCodeModel';
...

然后你必须制作迁移文件来重命名所有护照 tables:

Schema::rename('oauth_codes', 'Oauth_codes');
...

如果您不想更改 table 供应商迁移和模型中的名称,那么这些步骤太多了。

它已准备好正常工作。

Remember you have to do this for all passport tables and models.