在我的项目中,我使用默认的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, // <---
],
...