Laravel 6 - 会员跟踪用户注册

Laravel 6 - Affiliate Tracking User Registeration

正如你们在 Image Above 中看到的那样,我想创建 referral_system 用户可以从 affiliate users.

注册和输入 referral_user

并且Referral_Code对于每个用户都是唯一的。

My Problem is I cant track Whom that code is.

My User Schema

       Schema::create('users', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->unsignedBigInteger('referrer_id')->nullable();
            $table->foreign('referrer_id')->references('id')->on('users');
            $table->string('referral_code')->unique()->nullable();
            $table->string('referred_by')->nullable();
            $table->string('name');
            $table->string('email')->unique();
            $table->string('password');
            $table->rememberToken();
            $table->timestamps();
        });

My User Model

    public function referrer()
    {
        return $this->belongsTo(User::class);
    }


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

In My UserController

       $referrer = User::where('name', auth()->user()->name)->first();

        $user = new User();
        $user->name = $request->name;
        $user->referral_code = substr(uniqid(), 0, 8); // for unique id
        $user->email = $request->email;
        $user->referrer_id = $referrer ? $referrer->id : null;
        $user->role = $request->role;
        $user->password = bcrypt($request->password);
        $user->save();

        return response()->json([
            'created' => true,
        ]);

希望你们能给我一些想法,如果您发现我的代码中有错误,请纠正我,我将不胜感激。

谢谢...

我认为您混淆了 Laravel 关系。 hasOne, belongsTo, etc 并非设计用于在同一模型中使用。基本上你在 Users 模型中所说的是 "User has a User where user_id = id" 这没有任何意义。

我不知道你是如何设计你的 sql tables 的,我建议你将你的实体分成不同的部分并使用枢轴 tables 来绑定它们: users, affiliates, referrals

- users table have     : "id"
- affiliates table have: "id", "refferal_code"
- refferals table have : "id", "affiliate_id", "user_id", "refferal_code"

您通过 refferals table,通过他们的 ID 将用户与附属机构联系起来。

然后在它们之间建立关系。您可能还想阅读有关 Eloquent relationships 的更多信息。希望这个回答对你有帮助。