Laravel 7 与谁邀请我建立联系

Laravel 7 make relation to found out who invited me

在我的网络应用程序中,每个应用程序都可以像网络系统一样拥有无限的用户。我可以找到哪个用户注册了用户参考码,但我想知道谁是我的parent并邀请我注册

例如,此代码可以是 return 有多少用户使用我的参考代码注册:

$users = User::whereNull('user_id')->with('child')->get();

型号:

public function child()
{
    return $this->hasMany(User::class)->with('child');
}

我怎么知道 child 的 parent 是谁?就像从树枝到根

User 迁移文件:

Schema::create('users', function (Blueprint $table) {
    $table->id();

    $table->string('name')->nullable();
    $table->string('family')->nullable();
    $table->string('username')->unique();

    $table->string('email')->unique();
    $table->timestamp('email_verified_at')->index()->nullable();

    $table->unsignedBigInteger('user_id')->index()->nullable();
    $table->foreign('user_id')->references('id')->on('users');

    $table->string('password');

    $table->rememberToken();
    $table->softDeletes();
    $table->timestamp('created_at')->useCurrent();
    $table->timestamp('updated_at')->useCurrent();
});

User 型号:

class User extends Authenticatable
{
    use Notifiable, SoftDeletes;

    protected $guarded = [
        'id',
    ];
    protected $hidden = [
        'password', 'remember_token',
    ];

    protected $casts = [
        'email_verified_at' => 'datetime'
    ];

    public function users()
    {
        return $this->hasMany(User::class)->with('users');
    }
}

获得parents

{
    return $this->belongsTo(User::class, 'user_id');
}

为了得到孩子

{
    return $this->hasMany(User::class, 'user_id', 'id');
}

这个解决方案工作正常:

public function child()
{
    return $this->hasMany(User::class)->with('child');
}

public function parent()
{
    return $this->belongsTo(User::class, 'user_id');
}