Специальный токен Laravel для регистрации

#php #laravel

#php #laravel

Вопрос:

Я пытался создать систему токенов / систему приглашений для моего приложения laravel, но у меня возникли некоторые проблемы, поскольку я новичок в laravel.

В любом случае, это мой RegisterController.php (я использую значение по умолчанию включено, но я добавил к нему)

     /**
     * Get a validator for an incoming registration request.
     *
     * @param  array  $data
     * @return IlluminateContractsValidationValidator
     */
    protected function validator(array $data)
    {
        return Validator::make($data, [
            'name' => ['required', 'string', 'max:255', 'unique:users'],
            'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
            'password' => ['required', 'string', 'min:8', 'confirmed'],
            'code' => ['required', 'required', 'string', 'exists:codes,code',]
        ]);
    }

    /**
     * Create a new user instance after a valid registration.
     *
     * @param  array  $data
     * @return AppUser
     */
    protected function create(array $data)
    {
        $usedcode = $data['code'];
        $code = DB::table('codes')->where('code', $usedcode)->first();
        $invby = $code->by;
        return User::create([
            'name' => $data['name'],
            'email' => $data['email'],
            'password' => Hash::make($data['password']),
            'by' => $invby,
        ]);
        $code->user = $usedcode;
        $code->save();
    }
 

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

По сути, я пытаюсь сделать так, чтобы после создания пользователя он также обновлял таблицу «коды», чтобы установить в столбце «пользователь» идентификатор вновь зарегистрированных пользователей, а затем также пытался обновить таблицу пользователей, чтобы установить в столбце «by» идентификатор, который находится в таблице кодов подстолбец «by»

Итак, в целом, я пытаюсь получить новый идентификатор пользователя, а затем вставить его в столбец users в таблице «коды».

Затем я также пытаюсь захватить столбец «by» из «codes», чтобы затем обновить его в столбце таблиц «users», а также «by».

Я пытался его изменить, поискал в Google, и это мое последнее средство.

С уважением.

Ответ №1:

Я не думаю, что вы можете использовать save() on $code , поскольку это не ссылка на модель, это просто коллекция, полученная из таблицы. Попробуйте сохранить данные кода с DB::insert помощью или DB::update . В качестве альтернативы вы можете создать модель для своей таблицы кода.

Комментарии:

1. Эйо, у меня есть модель для моих кодов, и я также включаю ее в начало, делая: use App Codes;

2. Поэтому вместо DB::table('codes')->where() этого попробуйте Codes::where при получении вашей коллекции.

3. У вас также есть несколько советов по правилам проверки, чтобы проверить, не используется ли токен? В основном в моей таблице кодов я получил столбец «used», и я хочу проверить, что используемый столбец равен 0

4. Я попытался выполнить следующее: « return Validator::make($data, [ ‘name’ => [‘required’, ‘string’, ‘max: 255’, ‘unique:users’], ’email’ => [‘required’, ‘string’, ’email’, ‘max: 255’, ‘unique:пользователи’], ‘пароль’ => [‘требуется’, ‘строка’, ‘минимум: 8’, ‘подтверждено’], ‘код’ => [‘требуется’, ‘строка’, ‘существует: коды,code’, Rule::unique(‘codes’)->where(function ($query) { return $query->where(‘used’, 0); ])« но он выдает синтаксическую ошибку, неожиданную ‘]’