首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在Laravel PHP中创建邀请系统

如何在Laravel PHP中创建邀请系统
EN

Stack Overflow用户
提问于 2021-01-25 03:32:17
回答 2查看 702关注 0票数 0

我是新来的,我正在看youtube的播放列表来构建我的第一个项目……现在我正在尝试实现一个仅用于inv的系统,这样注册表单看起来就像

代码语言:javascript
运行
复制
username:
inv code:
password:

我已经创建了一个迁移,它具有

代码语言:javascript
运行
复制
user_id - this is user id of the user who created the invite
code - the code which will get validated at time of registration and then deleted
{timestamps}

因此,im遇到的问题是:如何验证用户输入的invite存在于表"inv_codes“中,并与列"code”匹配,然后在完成注册后将其删除

下面是一个最小的可重现的例子

代码语言:javascript
运行
复制
lass RegisterController extends Controller
{
    public function __construct()
    {
        $this->middleware(['guest']);
    }

    public function index()
    {
        return view('auth.register');
    }

    public function submit(Request $request)
    {
        $this->validate($request, [
            'username' => 'required|max:6',
            'password' => 'required',
        ]);

        User::create([
            'username' => $request->username,
            'password' => Hash::make($request->password),
        ]);

        auth()->attempt($request->only('username', 'password'));
        return redirect()->route('dashboard');
    }
}
EN

回答 2

Stack Overflow用户

发布于 2021-01-25 03:46:38

理想情况下,您应该创建一个表来保存邀请函和附带的雄辩模型。在注册时,您可以通过几种方式检查用户输入的邀请码是否有效。

手动

代码语言:javascript
运行
复制
Invitation::where('code', request()->inv_code)->firstOrFail(); 

验证

代码语言:javascript
运行
复制
request()->validate([
    'inv_code' => ['exists:inv_codes,code'],
]);

无论哪种情况,您都需要获取邀请,然后在注册用户后将其删除。

代码语言:javascript
运行
复制
$invitation->delete();
票数 0
EN

Stack Overflow用户

发布于 2021-01-25 03:47:33

假设您在users和inv_codes表中都有code列。现在,在注册过程中,您可以使用验证。如下所示:

代码语言:javascript
运行
复制
$request->validate([
        'code' => 'required|exists:inv_codes,code',
        // ... rest of registration fields
    ]);

然后,您可以通过如下方式删除inv_codes表中的该行:您可以在:https://laravel.com/docs/8.x/validation#quick-writing-the-validation-logic上阅读更多信息

代码语言:javascript
运行
复制
DB::table('inv_codes')->where('code', $request->code)->delete();

有关更多信息,请访问:https://laravel.com/docs/8.x/queries#delete-statements

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65875015

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档