为了账号安全,请及时绑定邮箱和手机立即绑定

Laravel 6 - 联盟跟踪用户注册

Laravel 6 - 联盟跟踪用户注册

PHP
波斯汪 2022-10-14 14:58:23
正如你们所看到的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,        ]);希望你们能给我一些想法,如果你们发现我的代码有错误,请纠正我,我会感谢你们的帮助。谢谢...
查看完整描述

1 回答

?
qq_笑_17

TA贡献1818条经验 获得超7个赞

我相信你混淆了 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 关系的信息。希望这个答案对您有所帮助。


查看完整回答
反对 回复 2022-10-14
  • 1 回答
  • 0 关注
  • 65 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信