首页 > 解决方案 > Laravel 特殊令牌注册

问题描述

我一直在尝试为我的 laravel 应用程序制作一个令牌系统/邀请代码系统,但是自从我刚接触 laravel 以来,我遇到了一些麻烦。

无论如何,这是我的 RegisterController.php (我使用的是默认值,但我已经添加到它上面)

    /**
     * Get a validator for an incoming registration request.
     *
     * @param  array  $data
     * @return \Illuminate\Contracts\Validation\Validator
     */
    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 \App\User
     */
    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();
    }

正如您从上面的代码中看到的那样,目前它确实可以验证邀请代码,但问题是它会跳过更新其他内容。

基本上我正在尝试这样做,所以在它创建用户之后它还会更新“代码”表以将“用户”列设置为新注册的用户 ID,然后还尝试更新用户表以设置“按”列到“by”列下的代码表中的 ID

总而言之,我试图获取新的用户 ID,然后将其插入“代码”表中的用户列中。

然后我也试图从“codes”中获取“by”列,然后将其更新为“users”表列“by”。

我试过改造它,谷歌搜索,这是我最后的手段。

问候。

标签: phplaravel

解决方案


我认为你不能使用save()on$code因为它不是对模型的引用,它只是从表中检索的集合。尝试使用DB::insert或持久化代码数据DB::update。或者,您可以为代码表创建一个模型。


推荐阅读