首页 > 解决方案 > Laravel Sanctum 默认模型定制

问题描述

我在我的 Laravel 应用程序 `MongoDB 中使用 composer 包作为数据库驱动程序:

https://github.com/jenssegers/laravel-mongodb

默认情况下,Laravel 模型扩展Illuminate\Database\Eloquent\Model类。

但是当我使用MongoDB then my models must extend the Jenssegers\Mongodb\Eloquent\Model` 类而不是默认的 Laravel 类时。

我现在如何将 Laravel Sanctum 默认扩展模型类替换Laravel\Sanctum\PersonalAccessTokenJenssegers\Mongodb\Eloquent\Model.

例子

<?php

namespace Laravel\Sanctum;

// use Illuminate\Database\Eloquent\Model;                      // Replace this class
use Jenssegers\Mongodb\Eloquent\Model;                          // To this class
use Laravel\Sanctum\Contracts\HasAbilities;

class PersonalAccessToken extends Model implements HasAbilities
{
    // sanctum model
}

现在我可以在vendor文件夹中执行此操作,但我认为这是不正确的方式。如何正确解决这个问题?

标签: phplaravelmongodbeloquentlaravel-sanctum

解决方案


您需要做的是创建一个自定义 PersonalAccessToken (您可以复制原始的“Laravel\Sanctum\PersonalAccessToken.php”)然后只需更改

use Illuminate\Database\Eloquent\Model

为了

use Jenssegers\Mongodb\Eloquent\Model

最后在 \Providers\AuthServiceProvider

您必须添加启动功能

public function boot()
{
    $this->registerPolicies();

    Sanctum::usePersonalAccessTokenModel(PersonalAccessToken::class);
}

推荐阅读