Day8 跟着官方文件学习Laravel-注册帐号

今天要把用指令传进来的资料写进DB完成注册,首先我们要在DB中创建一张Users的表

CREATE TABLE ironman.Users (
	id INT auto_increment Primary key,
	account varchar(100) NOT NULL,
	password varchar(100) NOT NULL,
	name varchar(100) NOT NULL
)

好的,我们现在先想一下注册帐号的步骤是什麽

  1. 检查帐号是否存在
  2. 若不存在,把资料存进资料库
  3. 显示注册成功

那我们开始实作第一步吧
先学学如何select资料吧

$user = DB::table('users')->where('account', $account)->first();
dd($user);

好,他回我null,表示说当$user === null时,我就可以把资料写进资料库

if($user === null){
    // insert data
}

如何insert data呢

DB::table('users')->insert([
    'account' => $account,
    'password' => $password,
    'username' => $name
]);

laravel有提供Hash::make来散列密码

DB::table('users')->insert([
    'account' => $account,
    'password' => Hash::make($password),
    'username' => $name
]);

OK...默默地写完了,好我们来试着注册看看吧

php artisan sign-up myaccount 23acCC_ yourname

成功了,可以再输入一次试试看会怎样,结果发现,重复注册时,没跳讯息XD
补一下

$account = $this->argument('account');
        $password = $this->argument('password');
        $username = $this->argument('username');
        $validator = Validator::make(['password' => $password], [
            'password' => 'regex:' . SignUp::PASSWORD_REGEX
        ]);

        if ($validator->fails()) {
            $this->error("密码需要6位数以上,并且至少包含大写字母、小写字母、数字、符号各一");
            return 1;
        }
        $user = DB::table('users')->where('account', $account)->first();
        if($user !== null){
            $this->error("帐号重复注册");
            return 1;
        }
        DB::table('users')->insert([
                'account' => $account,
                'password' => Hash::make($password),
                'name' => $username
            ]);
        return 0;

OK,完成啦,明天来做登入验证!


<<:  Day7-TypeScript(TS)基础型别资料Part 2

>>:  【Day 7】Google Apps Script - 使用 Google Docs 撰写 Demo 用的 API 文件

18 在 Phoenix 1.6 安装 tailwindcss

这一篇可能满好用的 安装 Tailwind 这边建议稍微看一次 Tailwind 官网的安装说明 会...

Re-architect - ContextMenuView

以下是到目前为止的架构图,已经成功的将 ViewModel 层的全部商业逻辑移到了 Domain 层...

[Day 27] Android Studio 七日陨石开发:又到了开启相簿的季节

前言 昨天我们成功开启相机并且回传相片,但我还没设定要回传到哪, 今天我一样要在不设定回传到哪的情况...

【Day13】运算子(Operator)

运算子主要是利用符号或单词,来运算前後的值并回传结果 范例: 我们到 Chrome 浏览器的 Con...

Angular 深入浅出三十天:表单与测试 Day19 - 与 Cypress 的初次见面(下)

昨天跟大家初步地分享了 Cypress 怎麽安装、 Cypress 的资料夹结构 、 Cypres...