Laravel 6 - 联盟跟踪用户注册

http://img2.mukewang.com/634908a500018b8d04190494.jpg

正如你们所看到的Image Above,我想创建用户可以注册和输入referral_user的推荐系统affiliate users。


并且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,

        ]);

希望你们能给我一些想法,如果你们发现我的代码有错误,请纠正我,我会感谢你们的帮助。


谢谢...


波斯汪
浏览 66回答 1
1回答

qq_笑_17

我相信你混淆了 Laravel 的关系。hasOne, belongsTo, etc不是为在同一模型中使用而设计的。基本上你在Users模型中所说的是“用户有一个用户,其中 user_id = id”这是没有意义的。我不知道您是如何设计 sql 表的,我建议您将实体拆分为不同的部分,并使用数据透视表来绑定它们:users, affiliates, referrals- users table have     : "id"- affiliates table have: "id", "refferal_code"- refferals table have : "id", "affiliate_id", "user_id", "refferal_code"refferals您通过表,通过他们的 ID将用户与会员联系起来。然后在它们之间建立关系。您可能还想阅读更多关于Eloquent 关系的信息。希望这个答案对您有所帮助。
打开App,查看更多内容
随时随地看视频慕课网APP