我开发了一个存储在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
接收扩展用户模型的对象,或者每次需要时都必须手动接收此对象?
答案 0 :(得分:5)
我认为,最简单的方法是通过扩展App\User
模型来制作您的包模型。您只需打开config/auth.php
并设置模型类。
'providers' => [
'users' => [
'driver' => 'eloquent',
'model' => Project\Models\User::class,
],
您将通过Auth::user()
获得正确的模型。