Laravel在包中使用自定义USER-Model

Ner*_*nNF 6 php model package laravel laravel-5.5

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

在我的包中,我将不得不使用包含默认用户模型中未提及的关系的扩展用户模型.

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


更多细节:

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

我扩展了这个模型,现在包含一个新的关系函数,存储在LaravelRoot/packages/myname/project/src/App/Models/User(namespace :)中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();
}
Run Code Online (Sandbox Code Playgroud)

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

shu*_*van 5

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

'providers' => [
    'users' => [
        'driver' => 'eloquent',
        'model' => Project\Models\User::class,
    ],
Run Code Online (Sandbox Code Playgroud)

您将获得正确的模型Auth::user().

  • 谢谢,这是正确的提示!现在我添加了`config(['auth.providers.users.model'=> Myname\Myproject\App\Models\User :: class]);`添加到package-service-provider中的boot-method. (2认同)