我目前遇到一个问题,如果我采用正确的方法,我需要重新考虑。就本例而言,在重新架构方面,我的摆动空间有限,但是请听我说。
我有两个引用相同表,不同类型“用户”的模型。
提供者:
class Provider extends User
{
protected $table = 'users';
protected static function boot()
{
parent::boot();
static::addGlobalScope('user_type', function (Builder $builder) {
$builder->where('type', '=', 'provider')->orWhere('type', '=', 'admin');
});
}
}
用户:
class User extends Authenticatable
{
...normal user items
}
这听起来可能令人困惑,但是提供者可以通过“ provider_id”列“拥有”任何数量的用户。提供者还可以通过provider_id拥有另一个提供者。我正在寻求建立一种关系,在这种关系中,“父”提供程序(拥有另一个提供程序的人)可以访问“子”提供程序的拥有的用户。
我正在尝试使用hasManyThrough,但仍然遇到以下错误:
Syntax error or access violation: 1066 Not unique table/alias
我的关系如下:
class Provider extends User
{
protected $table = 'users';
protected static function boot()
{
parent::boot();
static::addGlobalScope('user_type', function (Builder $builder) {
$builder->where('type', '=', 'provider')->orWhere('type', '=', 'admin');
});
}
public function childSavers() {
return $this->hasManyThrough(User::class, Provider::class, 'provider_id', 'provider_id', 'id', 'id');
}
}
据我所知,这是因为我试图在同一张桌子上旋转,但是还有其他人可以定义这种关系吗?
谢谢!