Laravel HasManyThrough通过相同的模型具有不同的范围

时间:2019-09-24 17:09:03

标签: php laravel eloquent

我目前遇到一个问题,如果我采用正确的方法,我需要重新考虑。就本例而言,在重新架构方面,我的摆动空间有限,但是请听我说。

我有两个引用相同表,不同类型“用户”的模型。

提供者:

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');
    }
}

据我所知,这是因为我试图在同一张桌子上旋转,但是还有其他人可以定义这种关系吗?

谢谢!

0 个答案:

没有答案