正如你们所看到的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 关系的信息。希望这个答案对您有所帮助。
- 1 回答
- 0 关注
- 85 浏览
添加回答
举报
0/150
提交
取消