Laravel 在包中使用自定义用户模型

Laravel use custom USER-Model in package

我在 Laravel 中开发了一个存储在 LaravelRoot/packages/myname/project/ 中的包。

在我的包中,我必须使用包含默认用户模型中未提及的关系的扩展用户模型。

现在我的问题是: 我如何覆盖包中的默认用户模型?


更多详情:

如果我通过包内的 Auth::user() 接收当前用户,我将使用默认 App\User.

接收一个对象

我扩展了这个模型,现在包含一个新的关系函数,存储在 LaravelRoot/packages/myname/project/src/App/Models/User(命名空间:Myname\Myproject\App\Models)中。 这是我的关系函数:

/**
 * The roles that belong to the user.
 *
 * @return \Illuminate\Database\Eloquent\Relations\BelongsToMany
 */
public function roles()
{
    return $this->belongsToMany(Role::class)->withTimestamps();
}

这个关系只在我的包中使用,所以我不想把这个函数存储在默认的 App\User 中。是否可以在我的包裹中使用 Auth::user() 接收我的扩展用户模型的对象,或者每次我需要这个时我都必须手动接收这个对象吗?

我认为,最简单的方法是通过扩展 App\User 模型来制作您的包模型。您只需要打开 config/auth.php 并设置您的模型 class.

'providers' => [
    'users' => [
        'driver' => 'eloquent',
        'model' => Project\Models\User::class,
    ],

您将通过 Auth::user() 获得正确的模型。