Laravel 6 - Регистрация Партнерского Отслеживания Пользователя - PullRequest
0 голосов
/ 02 марта 2020

enter image description here

Как вы, ребята, можете видеть в Image Above, я хочу создать referral_system, которую пользователь может зарегистрировать и ввести 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 Ответ

0 голосов
/ 02 марта 2020

Я полагаю, вы путаете 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"

Вы t ie пользователь с филиалом через refferals таблицу, через свои идентификаторы.

Тогда создайте отношения между ними. Вы также можете прочитать больше о Красноречивых отношениях . Надеюсь, этот ответ поможет вам.

...