Laravel在包

时间:2018-01-09 15:37:25

标签: php laravel model package laravel-5.5

我开发了一个存储在Laravel {/ 1}}中的软件包。

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

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

更多详情:

如果我通过我的包裹内的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接收扩展用户模型的对象,或者每次需要时都必须手动接收此对象?

1 个答案:

答案 0 :(得分:5)

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

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

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