• 首页
  • 前端
    • HTML
    • CSS
    • Javascript
    • XML
    • AJAX
  • 前端框架
    • BootStrap
    • Jquery
  • PHP
    • 语法
    • 核心
    • 面向对象
    • PHP7
    • Socket
    • Swoole
  • 数据库
    • Mysql
    • Redis
    • Memcache
    • MongoDB
  • 优化
    • 优化方案
    • 页面静态化
    • Nginx
  • 后台框架与实战
    • Smarty
    • 源码Blog
    • TP3.2
    • TP3.2商城
    • TP5.0
    • TP5.0商城
    • Laravel
    • Laravel在线教育平台
    • Yii
    • Yii手机直播
    • CodeIgniter
    • Yaf
  • 移动开发
    • 微信公众号
    • 混合APP
  • 二次开发
    • DedeCMS
  • Linux
    • 基本操作
    • 环境搭建
  • 版本控制
    • GIT
    • SVN
  • Node.js
  • 资料库
没有结果
查看所有结果
  • 首页
  • 前端
    • HTML
    • CSS
    • Javascript
    • XML
    • AJAX
  • 前端框架
    • BootStrap
    • Jquery
  • PHP
    • 语法
    • 核心
    • 面向对象
    • PHP7
    • Socket
    • Swoole
  • 数据库
    • Mysql
    • Redis
    • Memcache
    • MongoDB
  • 优化
    • 优化方案
    • 页面静态化
    • Nginx
  • 后台框架与实战
    • Smarty
    • 源码Blog
    • TP3.2
    • TP3.2商城
    • TP5.0
    • TP5.0商城
    • Laravel
    • Laravel在线教育平台
    • Yii
    • Yii手机直播
    • CodeIgniter
    • Yaf
  • 移动开发
    • 微信公众号
    • 混合APP
  • 二次开发
    • DedeCMS
  • Linux
    • 基本操作
    • 环境搭建
  • 版本控制
    • GIT
    • SVN
  • Node.js
  • 资料库
没有结果
查看所有结果
没有结果
查看所有结果

Laravel框架(三)Composer、数据迁移、学生管理小项目(登录模块、学生列表)

Mr.Lee 由 Mr.Lee
2018年5月20日
在 Laravel, 后台框架
0
laravel

laravel

0
分享
4
浏览

Laravel框架第3天

一、学习Composer

1、了解Composer

1)什么是Composer

Composer是 PHP 用来管理依赖(dependency)关系的工具。你可以在自己的项目中声明所依赖的外部工具库(libraries),Composer 会帮你安装这些依赖的库文件。

2)理解

  • 如果PHP是win操作系统,composer就是杀毒软件的软件管家
  • 如果PHP是Linux操作系统,composer就是yum

之前:项目中需要发送邮件、验证码等功能必须自己去网上下载整合到项目中

现在:通过composer命令安装自动整合到项目中

3)总结

Composer是为PHP准备的软件管家,项目所需工具库都可以通过Composer下载

下载Composer

❉ 官网

  • 官方网站:https://getcomposer.org (安装下载composer用)
  • 中文网站:http://www.phpcomposer.com/ (学习,切换镜像)
  • 仓库地址:https://packagist.org/ (存放组件的仓库,需翻墙)

※ 方法1:说明,下载并安装(不推荐)

  • 下载composer-setup.exe文件安装
  • 好处:傻瓜式、安装简单
  • 坏处:容易报错、仅win操作系统使用

步骤1:下载

步骤2:双击

步骤3:安装(注:除下图选择php.exe其余直接下一步next):

步骤4:检查是否安装成功(在DOS窗口输入 composer出现下图字样则安装成功)

※ 方法2:说明,下载并安装(推荐使用)

  • 下载composer.phar文件安装
  • 好处:跨平台
  • 坏处:渣渣上手难

步骤1:下载(打开网页,拖拽到底部)

步骤2:该文件免安装所以可以直接使用

步骤2:检查是否安装成功(在DOS窗口输入 composer出现下图字样则安装成功)

语法

http://docs.phpcomposer.com/03-cli.html

composer install #第一次从远处仓库拉去php包的时候执行

composer update #修改本地的composer.json后执行(安装,更新)

composer require #包含/下载一个php包到vendor目录中

composer init #创建一个composer.json文件(不推荐,自己手动创建即可)

composer about #查看composer的信息

composer self-update #composer自己更新

composer list #查看帮助

︴简化Composer命令

  • 复杂:php composer.phar 指令
  • 简化:composer 指令

说明:后期大量使用composer命令,语法:【php composer.phar 指令】

发现:每次重复敲【php composer.phar】太长

解决:

步骤1:将composer.phar放到www目录中

步骤2:打开DOS窗口输入DOS命令echo @php “%~dp0composer.phar” %*>composer.bat(注:执行命令后会自动创建.bat文件)

步骤3:将composer.bat将去环境变量

步骤4:验证

4、Composer下载软件包流程

二、数据迁移

1、概念

数据迁移就是使用PHP管理数据库

传统数据管理和数据迁移区别

语法

︴手册

http://laravelacademy.org/post/6964.html

调用方法声明创建字段

  • php artisan make:migration 数据迁移名称
  • php artisan make:migration create_表名_table –create=表名 (创建表)
  • php artisan make:migration update_表名_table –table=表名 (修改表)

问:三个语法区别

答:相对而言语法2语法3比语法1多了一些数据,便于创建和修改表

2)运行/撤销迁移

  • 运行:php artisan migrate
  • 撤销:php artisan migrate:rollback

︴初体验(创建表、修改表)

  • 需求:创建表a(字段:id,uname)

步骤1:创建数据迁移文件(也就是创建一个php文件 管理生成a表)

public function up()

{

Schema::create(‘a’, function (Blueprint $table) {

$table->increments(‘id’);

$table->string(‘name’, 30);

});

}

  • 需求:修改表a(name改成varchar类型长度为1、增加一个创建于created_at字段)

public function up()

{

Schema::table(‘a’, function (Blueprint $table) {

//改已存在的字段类型

$table->string(‘name’, 4)->change();

//新增

$table->integer(‘created_at’);

});

}

︴练习1:通过数据迁移创建下属表

1)原声SQL

create table day3_t2 (

id int primary key auto_increment comment ‘编号’,

uname varchar(30) not null comment ‘用户名’,

pwd char(32) not null comment ‘密码’,

content text not null comment ‘内容’,

created_at int not null default 0 comment ‘创建于’,

updated_at int not null default 0 comment ‘更新于’

)engine=myisam charset=utf8;

数据迁移

步骤1:创建迁移文件(php artisan make:migration create_day3_t2_table –create=day3_t2)

步骤2:编写迁移代码

public function up()

{

Schema::create(‘day3_t2’, function (Blueprint $table) {

// create table day3_t2 (

// id int primary key auto_increment comment ‘编号’,

// uname varchar(30) not null comment ‘用户名’,

// pwd char(32) not null comment ‘密码’,

// content text not null comment ‘内容’,

// created_at int not null default 0 comment ‘创建于’,

// updated_at int not null default 0 comment ‘更新于’

// )engine=myisam charset=utf8;

//编码已数据库配置文件为主

$table->engine = ‘myisam’;

$table->increments(‘id’)->comment(‘编号’);

$table->string(‘uname’, 30)->comment(‘用户名’);

$table->char(‘pwd’, 32)->comment(‘密码’);

$table->text(‘content’)->comment(‘内容’);

$table->unsignedInteger(‘created_at’)->default(0)->comment(‘创建于’);

$table->unsignedInteger(‘updated_at’)->default(0)->comment(‘更新于’);

});

}

︴练习2:通过SQL语句修复线上BUG

1)原声SQL

#首先插入一条数据,然后test改为test2

insert into day3_t2

values

(null,’test’,’adfadsf’,’dfads’,0,0);

2)数据迁移

#创建数据迁移文件,文件名规则:fix_bug_BUG版本号

#将用户名改成test2

public function up()

{

DB::table(‘day3_t2’)->where(‘uname’, ‘test’)->update([

‘uname’=>’test2’

]);

}

三、填充数据(seeder)

1、概念

  • 数据迁移:就是使用php管理数据库
  • 填充数据:就是使用php快速插入测试数据

2、语法(seeder)

创建填充器:php artisan make:seeder 填充器名称 (推荐:表名TableSeeder 大驼峰)

运行填充器:php artisan db:seed –class=填充器名称

︴练习1:给day3_t2插入两百条数据

准备文件

php artisan make:seeder Day3t2TableSeeder

执行

︴练习2:faker使用

1)概念

  • 说明:faker就是PHP的一个库(类)
  • 作用:生成假数据,如手机号、地址、姓名等
  • 地址:https://packagist.org/packages/fzaninotto/faker
  • 地址:https://github.com/fzaninotto/Faker#fakerproviderimage

使用

步骤1:下载(composer require fzaninotto/faker)

步骤2:使用

Route::get(‘/test’, function() {

$faker = \Faker\Factory::create(‘zh_CN’);

echo $faker->name . ‘<br />’;

echo $faker->email . ‘<br />’;

echo $faker->phoneNumber . ‘<hr />’;

echo $faker->company . ‘<br />’;

echo $faker->city . ‘<br />’;

echo $faker->unixTime . ‘<hr />’;

echo $faker->imageUrl() . ‘<br />’;

echo $faker->imageUrl(50,50) . ‘<hr />’;

echo $faker->paragraph(20) . ‘<br />’;

});

整合数据填充

public function run()

{

for ($i = 0; $i < 100; $i++) {

$faker = \Faker\Factory::create(‘zh_CN’);

$insertData[] = [

‘uname’ => $faker->name,

‘pwd’ => $faker->password,

‘content’ => $faker->paragraph(20)

];

}

DB::table(‘day3_t2’)->insert($insertData);

}

小总结

什么是数据迁移:就是用PHP文件管理数据库

语法:

1) php artisan make:migration 迁移文件名称

2) php artisan make:migration create_表名_table –create=表名

3) php artisan make:migration update_表名_table –table=表名

运行迁移文件:php artisan migrate

撤销迁移文件:php artisan migrate:rollback

什么是数据填充:就是用PHP插入测试数据

什么是faker:就是PHP一个类,这个类生成假数据

数据填充: php artisan make:seeder 填充器名称/文件名 (注:推荐表名TableSeeder 大驼峰)

执行填充: php artisan db:seed –class=填充器名/文件名

四、学生管理小项目(登录模块)

1、准备

1)根据效果图(静态模板)设计表


create database laravel54;

use laravel54;

create table student(

id int primary key auto_increment comment ‘编号’,

uname varchar(45) not null comment ‘用户名’,

pwd varchar(255) not null comment ‘密码’,

age tinyint(3) not null default 0 comment ‘年龄’,

sex tinyint(1) not null default 1 comment ‘性别:1-男,2-女’,

created_at int not null default 0 comment ‘创建于’,

updated_at int not null default 0 comment ‘更新于’

)engine=myisam charset=utf8;

Laravel存储用户密码非MD5算法,而是使用php5.5新函数password_hash和password_verify

加密语法:Hash::make(‘admin888’); 或者 bcrypt(‘admin888’);

校验语法:Hash::check(‘admin888’, 密文);

2)通过PHP创建表并填充数据(数据迁移和填充数据)

  • 数据迁移

public function up()

{

// create table student(

// id int primary key auto_increment comment ‘编号’,

// uname varchar(45) not null comment ‘用户名’,

// pwd varchar(255) not null comment ‘密码’,

// age tinyint(3) not null default 0 comment ‘年龄’,

// sex tinyint(1) not null default 1 comment ‘性别:1-男,2-女’,

// created_at int not null default 0 comment ‘创建于’,

// updated_at int not null default 0 comment ‘更新于’

// )engine=myisam charset=utf8;

Schema::create(‘student’, function (Blueprint $table) {

$table->increments(‘id’)->comment(‘编号’);

$table->string(‘uname’, 45)->comment(‘用户名’);

$table->string(‘pwd’, 255)->comment(‘密码’);

$table->unsignedTinyInteger(‘age’)->default(0)->comment(‘年龄’);

$table->unsignedTinyInteger(‘sex’)->default(1)->comment(‘性别:1-男,2-女’);

$table->integer(‘created_at’)->default(0)->comment(‘创建于’);

$table->integer(‘updated_at’)->default(0)->comment(‘更新于’);

});

}

  • 创建模型

<?php

namespace App\Http\Model;

use Illuminate\Database\Eloquent\Model;

class Student extends Model

{

/**

* 设置表名

* @var string

*/

protected $table = ‘student’;

/**

* 声明可以批量设置的属性

* @var array

*/

protected $fillable = [‘uname’, ‘pwd’, ‘age’, ‘sex’];

/**

* Unix时间戳填充数据(注:默认托管创建于更新于)

* @var string

*/

protected $dateFormat = ‘U’;

}

  • 填充数据

说明:tinker是Laravel自带的便于调试数据库的工具

运行:php artisan tinker

指令:通过模型操作数据库

调用工厂文件:factory(App\Http\Model\AModel::class, 2)->create()

脚下留心:工厂文件中定义的模型必须通过migration创建无法将无法找到模型

登录模块【加载视图】

1)思路

  • 步骤1:定义路由 (/student/login 对应控制器 Student\LoginController@login)
  • 步骤2:创建控制器并加载视图
  • 步骤3:创建视图

代码

  • 步骤1:定义路由 (/student/login 对应控制器 Student\LoginController@login)

  • 步骤2:创建控制器并加载视图

  • 步骤3:创建视图

登录模块【登录数据处理】

1)思路

  • 步骤1:修改登录视图form参数
  • 步骤2:修改路由支持post提交(注:cstf 和 弹框资源处理)
  • 步骤3:控制器方法增加判断,是否POST提交(是-添加数据,否-加载视图)

代码

  • 步骤1:修改登录视图form参数(注:cstf 和 弹框资源处理)

弹框资源

<link href=”https://cdn.bootcss.com/sweetalert/1.1.3/sweetalert.min.css” rel=”stylesheet”>

<script src=”https://cdn.bootcss.com/sweetalert/1.1.3/sweetalert-dev.js”></script>

<script type=”text/javascript”>

@if (Session::has(‘tips’))

swal(“{{ Session::get(‘tips’) }}!”, “操作提示!”,”{{ Session::get(‘state’) }}”)

@endif

</script>

  • 步骤2:修改路由支持post提交

  • 步骤3:控制器方法增加判断,是否POST提交(是-判断数据,否-加载视图)

public function login(Request $request)

{

//1.判断是否提交

if ($request->isMethod(‘post’)) {

//2.接受数据

$postData = $request->all();

//3.根据用户名查询用户信息

$student = Student::where(‘uname’, $postData[‘uname’])->first();

//4.判断状态

if (!$student || !Hash::check($postData[‘pwd’], $student->pwd)) {

return redirect(‘/student/login’)->with([‘state’=>’error’, ‘tips’=>’账号或密码错误’]);

}

//5.登录成功去首页

return redirect(‘/student’)->with([‘state’=>’success’, ‘tips’=>’老铁,登录成功’]);

} else {

return view(‘student.login.login’);

}

}

五、学生管理小项目(学生列表)

1、学生列表

1)思路

  • 步骤1:定义路由 (/student 对应控制器 Student\IndexController@index)
  • 步骤2:创建控制器、查询所有数据、加载视图
  • 步骤3:创建视图
  • 步骤4:视图循环显示数据

2)代码

  • 步骤1:定义路由 (/student 对应控制器 Student\IndexController@index)

  • 步骤2:创建学生控制器、查询所有数据、加载视图

  • 步骤3:创建视图

  • 步骤4:视图循环显示数据

分页

弹框

<link href=”https://cdn.bootcss.com/sweetalert/1.1.3/sweetalert.min.css” rel=”stylesheet”>

<script src=”https://cdn.bootcss.com/sweetalert/1.1.3/sweetalert-dev.js”></script>

<script type=”text/javascript”>

@if (Session::has(‘tips’))

swal(“{{ Session::get(‘tips’) }}!”, “操作提示!”,”{{ Session::get(‘state’) }}”)

@endif

</script>

2、学生添加【加载视图】

1)思路

  • 步骤1:定义路由 (/student/add 对应控制器 Student\IndexController@add)
  • 步骤2:创建控制器方法、加载视图
  • 步骤3:创建视图

代码

  • 步骤1:定义路由 (/student/add 对应控制器 Student\IndexController@add)

  • 步骤2:创建控制器方法、加载视图

  • 步骤3:创建视图并修改表单action等属性

表单属性和cstf隐藏域

3、学生添加【数据处理】

1)思路

  • 步骤1:更改路由支持post提交
  • 步骤2:控制器接受数据、插入数据库、判断(成功-列表页,失败-当前页)

代码

  • 步骤1:更改路由支持post提交

  • 步骤2:控制器接受数据、插入数据库、判断(成功-列表页,失败-当前页)

<?php

namespace App\Http\Controllers\Student;

use App\Http\Model\Student;

use Illuminate\Http\Request;

use App\Http\Controllers\Controller;

class IndexController extends Controller

{

//添加

public function add(Request $request)

{

//1.判断

if ($request->isMethod(‘post’)) {

//2.接受数据

$postData = $request->all();

unset($postData[‘_token’]);

$postData[‘pwd’] = bcrypt($postData[‘pwd’]);

//3.插入数据

$rs = Student::create($postData);//脚下留心:cstf有隐藏域_token 模型自动托管创建于和更新于

//4.判断

if ($rs) {

return redirect(‘/student’)->with([‘state’=>’success’, ‘tips’=>’插入成功’]);

} else {

return redirect(‘/student/add’)->with([‘state’=>’error’, ‘tips’=>’插入失败’]);

}

} else {

//直接加载视图

return view(‘student.index.add’);

}

}

//列表

public function index()

{

//1.分页查询数据

$student = Student::orderBy(‘id’, ‘desc’)->paginate(2);

//2.加载视图并传递数据

return view(‘student.index.index’, compact(‘student’));

}

}

标签: Composer学生列表)学生管理小项目(登录模块数据迁移
上一篇文章

Laravel框架(四)视图、会话、中间价、防翻墙、数据验证、多表查询、扩展:PHP use使用场景、钻石设计软件

下一篇文章

Laravel框架(二)CSRF攻击、闪存数据、留言板案例、数据库操作、DB类操作、内置分页功能

下一篇文章
laravel

Laravel框架(二)CSRF攻击、闪存数据、留言板案例、数据库操作、DB类操作、内置分页功能

发表回复 取消回复

您的邮箱地址不会被公开。 必填项已用 * 标注

Search

没有结果
查看所有结果

About Me

个人随笔

Winston Lee

Programmer

Hello & welcome to my blog! My name is Winston Lee and am a programmer and am keen on sharing.

Winston Lee

About Me

Hello & welcome to my blog! My name is Winston Lee and am a programmer and am keen on sharing.

Categories

  • AJAX
  • BootStrap
  • CodeIgniter
  • CSS
  • DedeCMS
  • GIT
  • HTML
  • Javascript
  • Jquery
  • Laravel
  • Laravel在线教育平台
  • Linux
  • Memcache
  • MongoDB
  • MVC
  • Mysql
  • Nginx
  • Node
  • PDO
  • PHP
  • PHP7
  • PHP基本语法
  • PHP核心编程
  • Redis
  • Smarty
  • Socket
  • SVN
  • Swoole
  • TP3.2
  • TP3.2商城
  • TP5.0
  • TP5.0商城
  • XML
  • Yaf
  • Yii
  • Yii手机直播
  • 二次开发
  • 优化方案
  • 前端技术
  • 前端框架
  • 后台框架
  • 基本操作
  • 微信公众号
  • 数据库
  • 未分类
  • 混合APP
  • 源码Blog项目
  • 版本控制
  • 环境搭建
  • 移动端开发
  • 网站优化
  • 资料
  • 面向对象
  • 面向对象编程
  • 页面静态化

Tags

DOM Json RBAC 事件 传参 函数 分页 判断语句 匿名函数 变量 图片上传 存储过程 安装 对象 封装 属性 接口 控制器 数据库操作 数据类型 数据表 数组 文件上传 无刷新分页 权限 标签 模型 正则 流程控制 目录结构 算法 类 索引 继承 缩略图 表关系 视图 路由 运算符 选择器 递归 配置 错误处理 页面静态化 验证码
  • 首页
  • 前端
  • 前端框架
  • PHP
  • 数据库
  • 优化
  • 后台框架与实战
  • 移动开发
  • 二次开发
  • Linux
  • 版本控制
  • Node.js
  • 资料库

沪公网安备31011502400873 | 沪ICP备2024050435号-3

没有结果
查看所有结果
  • 首页
  • 前端
    • HTML
    • CSS
    • Javascript
    • XML
    • AJAX
  • 前端框架
    • BootStrap
    • Jquery
  • PHP
    • 语法
    • 核心
    • 面向对象
    • PHP7
    • Socket
    • Swoole
  • 数据库
    • Mysql
    • Redis
    • Memcache
    • MongoDB
  • 优化
    • 优化方案
    • 页面静态化
    • Nginx
  • 后台框架与实战
    • Smarty
    • 源码Blog
    • TP3.2
    • TP3.2商城
    • TP5.0
    • TP5.0商城
    • Laravel
    • Laravel在线教育平台
    • Yii
    • Yii手机直播
    • CodeIgniter
    • Yaf
  • 移动开发
    • 微信公众号
    • 混合APP
  • 二次开发
    • DedeCMS
  • Linux
    • 基本操作
    • 环境搭建
  • 版本控制
    • GIT
    • SVN
  • Node.js
  • 资料库

沪公网安备31011502400873 | 沪ICP备2024050435号-3