[Laravel] 08 - Auth & Data Migration
登录注册框架
一、加载Auth模块
Step 1, 安装Auth模块
生成相关 laravel 框架内部的代码模块:
$ php artisan make:auth
- 自动添加了路由代码
在laravel情况下,routes/web.php内多了auth相关的代码:

对应的Route的代码:【追根溯源】
/**
* Register the typical authentication routes for an application.
*
* @return void
*/
public function auth()
{
// Authentication Routes...
$this->get('login', 'Auth\AuthController@showLoginForm');
$this->post('login', 'Auth\AuthController@login');
$this->get('logout', 'Auth\AuthController@logout'); // Registration Routes...
$this->get('register', 'Auth\AuthController@showRegistrationForm');
$this->post('register', 'Auth\AuthController@register'); // Password Reset Routes...
$this->get('password/reset/{token?}', 'Auth\PasswordController@showResetForm');
$this->post('password/email', 'Auth\PasswordController@sendResetLinkEmail');
$this->post('password/reset', 'Auth\PasswordController@reset');
}
- HomeController类的构造函数
public function __contruct()
{
$this->middleware('auth');
}
中间件,请见:[Laravel] 14 - REST API: starter
- 自动添加了视图代码

Step 2, 手动改变样式
[1] 找到 resources/views/layouts/app.blade.php。

[2] 修改相关代码


[3] 效果展示

登录注册实现
一、连接数据库
- 配置.env 文件

- 用户与密码
[1] 配置好,只是连接好了,但不能用。
此时,需要配置好模型,包括相应的数据库内容。
[2] 执行migration命令
$ php artisan migrate
创建好了 Migration table,包括:
1. users_table
2. password_resets_table
[3] 多出来三张表,如下所示。

[4] 到此,登录和注册功能生效!
二、Laravel中的 数据迁移
- 概念与理解
Migration方便于团队开发,它就像 数据库的版本控制一样,它的功能就是可以 和别人共享你的数据库结构。
使用Laravel后,创建一张表的时候就直接生成迁移;一个迁移文件对应一张表。
Ref: [Laravel 5 教程学习笔记] 七、数据库迁移 Migrations
迁移是一种数据库的版本控制。可以让团队在修改数据库结构的同时,保持彼此的进度一致。它是 Laravel 5 最强大的功能之一。
一般我们可以通过phpmyadmin或者Navicat等数据库管理工具来创建、修改数据表结构。
如果就自己一个人的话还好,但是如果团队中有多个人,我们就需要导出表结构,然后传给团队中其他人,他们再把数据表结构导入他们的数据库,这时如果表中原来有数据的话就可能出现一些问题。
而 Laravel 5 中的 Migrations 很好的避免了此问题。
一个migration类包含两个方法 up & down。
up中主要包含创建表的具体内容。down中和前者相反,删除表。Schema::create接受两个参数。第一个是你要创建表的表名;第二个是一个闭包(匿名函数),获取用于定义新表的 Blueprint 对象。
- 生成 迁移文件
生成迁移文件:create_students_table.php
$ php artisan make:migration create_user_table --create=users
生成迁移文件在目录:[./database/migrations/...]
class CreateUsersTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('users', function (Blueprint $table) {
$table->increments('id');
$table->string('name');
$table->string('email')->unique();
$table->string('password', 60);
$table->rememberToken();
$table->timestamps();
});
} /**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::drop('users'); // 删除一张表
}
}
- 生成模型 附带 迁移文件
创建Model的时候,同时创建Migration文件。
$ php artisan make:model Article -m 生成:<timm>_create_articles_table.php 迁移文件
- 完善 迁移文件
Complete migration file like this:
public function up()
{
Schema::create('students', function (Blueprint $table) $table->increment('id');
$table->string('name');
$table->integer('age')->unsigned()->default(0);
$table->integer('sex')->unsigned()->default(10);
$table->integer('created_at')->default(0);
$table->integer('updated_at')->default(0);
});
}
based on this sql table as following:

- 执行 迁移文件
根据迁移文件,在数据库创建对应的数据表。
php artisan migration
三、Laravel中的 数据填充
- 概念与理解
当我们创建好表结构后,通常都要生成一些测试用的数据来测试。为了应对这个场景,Laravel 提供了相当好的服务 --seed
Laravel 的 seeder 都会放在:/database/seeders 目录中,
并且会提供一个DatabaseSeeder 在 DatabaseSeeder的run 方法中。
Ref: Laravel5.1 填充数据库
之前已经有了表,现在当然需要有个“概念”来处理表中的数据,也就是“数据填充”。
在run中可以用构建器 也可以用模型工厂。
- 基本操作

- 生成 填充文件
$ php artisan make:seeder StudentTableSeeder
在 laravel 中提供了一个解决方案, 我们可以创建额外的填充器来专门针对一张表。
生成了seeds文件夹内的文件: StudentTableSeeder.php

[1] 内容如下:【通过构造器操作数据库】
class StudentTableSeeder extends Seeder
{
public function run()
{
DB::table('students')->insert([
['name' => 'sean', 'age' => 18],
['name' => 'immoc', 'age' => 20],
}
}
[2] 或者使用 “模型工厂填充”。
Ref: laravel数据库迁移详解
方法一和我们以前用sql语句插入一条数据是一样的效果,所以并没有多大的提升。
我们想追求的是一次性填充多条测试数据,那么我们可以使用方法二。
手动指定每一个模型填充的属性是很笨重累赘的,在laravel中取而代之,我们可以使用模型工厂来方便地生成大量的数据库记录。
class StudentTableSeeder extends Seeder
{
public function run()
{
factory(\App\User::class, 10)->create();
}
}
另一个实例,基于 https://github.com/fzaninotto/Faker
<?php
/**
* 运行数据库填充
* @return void
*/
$factory->define(App\User::class, function (Faker\Generator $faker) {
static $password;
return [
'name' => $faker->name,
'email' => $faker->unique()->safeEmail,
'password' => $password ?: $password = bcrypt('secret'),
'remember_token' => str_random(10),
]; });
- 执行 填充文件
指定执行
执行 ArticlesSeeder 这个填充器 可以这样写:
php artisan db:seed --class=StudentTableSeeder
默认执行
默认执行就是执行 DatabaseSeeder 这个填充器:
php artisan db:seed
[Laravel] 08 - Auth & Data Migration的更多相关文章
- Core Data Migration 之拆分Entity
参考文章:http://blog.slalom.com/2010/01/08/splitting-an-entity-in-a-coredata-migration/ 最近自己做的背单词软件,在之前的 ...
- laravel 删除一条migration后要执行composer命令
Laravel 删除一条migration 字数29 阅读30 评论0 喜欢0 如果迁移已经执行,先回滚php artisan migrate:rollback 然后删除迁移文件,运行composer ...
- Laravel 之Auth用户认证
(1)生成Auth所需文件 打开phpstorm的命令行: php artisan make:auth 生成成功后,打开web.php, 发现多了如下代码: Auth::routes(); Route ...
- django 1.7 新特性 --- data migration
官方文档:https://docs.djangoproject.com/en/dev/topics/migrations/ 1.7 之前大家可能会用south用于管理数据库的模型的同步.1.7之后dj ...
- laravel的auth用户认证的例子
参考http://www.cnblogs.com/yjf512/p/4042356.html 需要注意的是,生成的测试数据,password部分必须用laravel自带的hash一下 Hash::ma ...
- laravel 验证码 auth方式登录 中间件判断session是否存在
首先下载laravel的插件 composer下载 实现验证码 composer require mews/captcha 在config/app.php进行配置 'providers' ...
- Entity Framework mvc Code First data migration
1. Code First 可以先在代码里写好数据模型,自动生成DB.下一次启动的时候会根据__MigrationHistory判断 数据库是否和模型一致. 详情参考:http://blogs.msd ...
- php的laravel数据库版本管理器migration
第一步:连接数据库 打开.env文件.配置DB_HOST DB_PORT DB_DATABASE=LARAVEL DB_USERNAME DB_PASSWORD 注意DB_DATABASE这一项需要自 ...
- DMA(Data Migration Assistant)迁移SQLServer数据库
DMA适用于 本地SQLServer向Azure SQL Database迁移 两台不同的数据库服务器之间迁移 高版本->低版本 或 低版本->高版本 本文以两台不同服务器的低版本(SQL ...
随机推荐
- python 条件语句和基础数据类型
条件语句 if 条件: pass else: pass 如果1等于1,输出欢迎进入东京热,否则输出欢迎进入一本道 ==: print("欢迎进入东京热") else: print( ...
- Centos7 MongoDB-3.4
MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的 关系型数据库遵循ACID规则 事务在英文中是transaction,和现实世界中的交易很类 ...
- redis 在 php 中的应用(Connection [ 连接] 篇)
本文为我阅读了 redis参考手册 之后编写,注意 php_redis 和 redis-cli 的区别(主要是返回值类型和参数用法) 目录: Connection(连接) AUTH ECHO PING ...
- 转载一篇关于toString和valueOf
可以这样说,所有JS数据类型都拥有valueOf和toString这两个方法,null除外.它们俩解决javascript值运算与显示的问题.在程序应用非常广泛.下面我们逐一来给大家介绍下. Java ...
- java三大特性--多态(1)
定义 对象具有多种形态 类型 引用的多态: 父类的引用指向自身对象 父类的引用指向子类对象 TrafficTool traffictool=new TrafficTool();//父类的引用指向本身类 ...
- 修正 Mui 下拉上拉刷新功能
下拉增加动态时间计算功能: 上拉增加状态文字提示功能(当然也支持时间计算功能,只是我们暂时用不到):
- 《西部世界》S2E9:蝶化庄周,浮生若梦
原以为第九集能解开本季大半的疑惑,结果还是被骗了……看来<西部世界>铁了心要把主要秘密都放在大结局里揭晓,大家就再等一周吧. 尽管如此,本集还是说清了不少谜团:比如威廉和格蕾丝的真实身份, ...
- MDX Cookbook 06 - GENERATE 循环遍历
有时候需要从集合中取出特定的成员但是又不能执行遍历操作,这个时候就可以使用 GENERATE 函数来解决这个问题. 根据地区查询每年的销售额 - SELECT NON EMPTY { , NON EM ...
- RPC框架-hessian学习
先说说hessian有什么优点和缺点 一.优点: 比 Java 原生的对象序列化/反序列化速度更快, 序列化出来以后的数据更小.序列化协议跟应用层协议无关, 可以将 Hessian 序列化以后的数据放 ...
- [AaronYang原创] 大话ASP.NET MVC3+ (C#与DOM与JS页面上的很炫的技巧)
案例一:比如我要传递一个新闻标题和新闻内容 存储到数据库去 1.最简单的通用Url公式就是 function getUrl() { var d = $("#表单ID").seria ...