Laravel扩展App\User并使用\Auth::user()->mymethod()调用



在我的项目中,我使用默认的App\User.php模型,如下所示:

namespace App;
class User extends Authenticatable
{
public function comments()
{
return $this->hasMany('AppComment', 'user_id', 'id');
}
}

我已经创建了一个包"商店",并希望扩展用户模型。例如:

namespace PixieboxShop;
use IlluminateDatabaseEloquentModel;
class Cart extends Authenticatable
{
public function posts()
{
return $this->belongsToMany('AppPost', 'cart_posts', 'cart_id', 'post_id')->withPivot(['listtype', 'qty']);
}
}

Pixiebox\Shop\src\Shop\User.php

namespace PixieboxShop;
use IlluminateFoundationAuthUser as Authenticatable;
class User extends Authenticatable
{
public function cart()
{
return $this->hasOne('PixieboxShopCart', 'user_id', 'id');
}
}

如果我做

$wishlist = Auth::user()->cart()->with(['posts' => function($subquery){
return $subquery->wherePivot('listtype', 'wishlist');
}])->first();

它返回"调用未定义的方法App\User::cart(("。因为这是一个可选的包,我不想把方法放在\App\User.php中,而是放在它所属的包中。还有别的办法吗?

您可以在config/auth.php内的providers模型下进行设置,该模型将用于身份验证:

'providers' => [
'users' => [
'driver' => 'eloquent',
'model' => AppUser::class, // <---
],
...

最新更新