Laravel——Web开发实战之路(五)
@[Laraval|后端|框架]
前言
搞定了静态页面和页面的美化工作,接下来要做的就是对用户的处理了,包括登录,注册等等
用户注册页面
- 首先注册路由,这样访问
http://sample.test/signup
时,可以看到注册页面
在route/web.php加入
Route::get('/signup','UsersController@create')->name('signup');
将signup的请求交给用户控制器处理UsersController
- 接下来生成用户控制器
在虚拟机内执行
php artisan make::controller UsersController
在路由中注册页面的请求交给create
方法执行
故在app/Http/Controllers/UsersController.php
中加入
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
class UsersController extends Controller
{
public function create()
{
return view('users.create');
}
}
- 紧接着要构建注册页面的视图
简单起见,就先这样写就好啦
resources/views/users/create.blade.php
@extends('layouts.default')
@section('title','注册')
@section('content')
<h1>注册</h1>
@stop
- 最后,在主页加上注册按钮即可
Resources/views/static_pages/home.blade.php
@extends('layouts.default')
@section('content')
<div class="jumbotron">
<h1>Hello Laravel</h1>
<p class="lead">
你现在所看到的是 <a href="https://laravel-china.org/courses/laravel-essential-training-5.1">Laravel 入门教程</a> 的项目主页。
</p>
<p>
一切,将从这里开始。
</p>
<p>
<a class="btn btn-lg btn-success" href="{{ route('signup') }}" role="button">现在注册</a>
</p>
</div>
@stop
数据库迁移
总的来说,数据库迁移就像git一样有用,它的优点在于
- 多人并行开发;
- 代码版本管理;
- 数据库版本控制 —— 如:回滚/重置/更新等;
- 兼容多种数据库系统;
- 部署方便。
默认迁移文件
在路径database/migrations/
下,
内容有
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
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::dropIfExists('users');
}
}
CreateUsersTable类继承自Migration基类
- up方法当进行迁移时会调用
- down方法当进行回滚时调用
在up方法中,使用Schema类的create方法创建了表,在down方法中,当users表存在时,就删除
查看数据库表
虚拟机内数据库连接方式是
- Host: 127.0.0.1
- Port: 33060
- User: homestead
- Pass: secret
这是之前设置在Homestead.yaml
文件中的
windows下链接请使用HeidiSQL工具,mac党使用SequelPro工具
第一步,要进行数据库迁移,也就是说在虚拟机内建立数据库
只需要在虚拟机内执行迁移命令即可
$ php artisan migrate
可以用工具查看到表为
migrations 表有两个字段:
migration 是迁移文件的名称;
batch 是用来记录迁移对应的批次,以此来实现 回滚迁移 的功能。
如果需要回滚,只需要执行
php artisan migrate
即可
模型文件
在 app/User.php
下,我们可以看到laravel自动生成的模型文件
<?php
namespace App;
use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;
class User extends Authenticatable
{
use Notifiable;
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'name', 'email', 'password',
];
/**
* The attributes that should be hidden for arrays.
*
* @var array
*/
protected $hidden = [
'password', 'remember_token',
];
}
定义要交互的数据table
protected $table='users';
代码块
protected $fillable = [
'name', 'email', 'password',
];
告诉我们,只有包含在属性中的字段才可以进行更新
敏感信息则用 hidden
隐藏
命名空间
为了更好地演示MVC模式开发,统一在app/Models
下建立模型文件,并且将User.php放入路径下
注意
由于更改了User.php的路径,所以命名空间什么也要改
- app/Models/User.php
里的namespace App
改成namespace App\Models
- 全局范围内将App\User
替换为 App\Models\User
用户对象的创建
理论上来说,用命令行操作比较好
首先进入tinker
php artisan tinker
执行命令创建对象
App\Models\User::create(['name'=> 'Aufree', 'email'=>'aufree@yousails.com','password'=>bcrypt('password')])
但是windows下的Homestead太不友好啦,个人觉得能不用命令行就不用,所以既然已经有了连接数据库的工具了,那么当然可以用工具修改啦
对象的查询
引入命名空间use App\Models\User
自己尝试命令
ser::find(1)
User::findOrFail(5)
User::first()
User::all()
对象的更新
同上,依旧自己尝试吧
$user = User::first()
$user->name = 'Summer'
User::first()
$user->save()
$user->update(['name'=>'Aufree'])
最后
一定要记得用git进行版本控制哦