php - 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”。
我试过改造它,谷歌搜索,这是我最后的手段。
问候。
解决方案
我认为你不能使用save()
on$code
因为它不是对模型的引用,它只是从表中检索的集合。尝试使用DB::insert
或持久化代码数据DB::update
。或者,您可以为代码表创建一个模型。
推荐阅读
- python-3.x - __Scrape__ 登录后的文件。在 Python 3.8 中使用请求。连接问题
- vba - 限制 Outlook 电子邀请的与会者
- mongodb - Mongo 转储特定日期的集合
- ubuntu - kubuntu 中的全局菜单不适用于 Firefox
- python - Python - 将文件内容与模板匹配
- mongodb - 如何将时间从亚洲/加尔各答时区转换为亚洲/东京时区,然后将亚洲/东京特定日期插入 MongoDB
- r - 使用函数从数据框创建函数
- javascript - 如何在不使用 jquery 或 js 的情况下应用条件 css
- reactjs - 设置 React Redux 调度的正确类型
- python - 如何为 jupyter notebook 中的命令赋予别名?