Laravel框架06:文件、迁移填充、会话、缓存
- 一、文件上传
- 1. 文件上传表单
- 2. 上传业务处理
- 3. 全部代码
- 二、数据表的迁移与填充
- 1. 迁移文件
- ① 创建迁移文件
- ② 编写迁移文件
- ③ 执行迁移文件
- ④ 回滚迁移文件
- 2. 填充(种子)文件
- ① 创建填充文件
- ② 编写填充文件
- ③ 执行填充文件
- 三、会话控制
- 四、缓存机制
- 1. 设置缓存
- 2. 获取缓存
- 3. 删除缓存
- 4. 计数器
一、文件上传
1. 文件上传表单
- action、method、enctype
- file
- submit
<form action="/home/test/test12" method="POST" enctype="multipart/form-data">
{{csrf_field()}}
<input type="file" name="file" id="">
<button type="submit">提交</button>
</form>
2. 上传业务处理
- 是否上传文件
$request->hasFile("avatar");
- 验证文件是否上传成功
$request->file("avatar")->isValid();
- 获取上传的文件
$file = $request->file("avatar");
// 或
$file = $request->avatar;
- 扩展方法
- path:文件绝对路径
- extension:扩展名。
- 更多方法见手册···
- 存储路径
如果路径是给PHP代码使用,路径建议使用相对路径。如果路径是给浏览器使用,则使用绝对路径。
需要先在 /public 下添加文件夹 uploads。
$request->file("avatar")->move('./uploads', md5(time() . rand(100000, 999999)) .".". $request -> file("avatar") -> getClientOriginalExtension());
3. 全部代码
public function test12(Request $request) {
//判断请求类型
if ($request->isMethod("POST")) {
// 上传
if ($request->hasFile("avatar") && $request->file("avatar")->isValid()) {
$request->file("avatar")->move('./uploads', md5(time() . rand(100000, 999999)) .".". $request -> file("avatar") -> getClientOriginalExtension());
}
}else{
// 展示视图
return view("home.test.test8");
}
}
二、数据表的迁移与填充
- 迁移:创建数据表的操作+删除数据表的操作
- 填充:往数据表里填充写入测试的数据(数据的插入操作)
1. 迁移文件
- 存放在 database/migrations 下的文件称之为迁移文件。
① 创建迁移文件
php .\artisan make:migration create_paper_table
- 新创建的迁移文件中,
up()
是创建数据表,down()
是删除数据表。
② 编写迁移文件
Schema
门面用于操作数据库。$table
表示整个表的实例。- 语法:
$table -> 列类型方法(字段名 [, 长度/范围]) -> 列修饰方法([修饰值]);
public function up()
{
Schema::create('paper', function (Blueprint $table) {
$table->increments("id");
$table->string("paper_name", 100);
$table->tinyInteger("paper_score")->default(100);
$table->integer("start_time")->nullable();
$table->tinyInteger("duration");
$table->enum("status", [1, 2])->default(1);
});
}
public function down()
{
Schema::dropIfExists('paper');
}
③ 执行迁移文件
- 第一次执行迁移文件前,需要先创建迁移文件记录表。
php .\artisan migrate:install
执行后,数据库中会多出一个数据表 migrations。
- 删除自带的迁移文件,只保留自己的。
- 执行迁移文件
php .\artisan migrate
④ 回滚迁移文件
- 回滚最后一次迁移操作
php .\artisan migrate:rollback
2. 填充(种子)文件
- 存放在 database/seeds 下的文件称之为填充文件。
① 创建填充文件
php .\artisan make:seeder PaperTableSeeder
② 编写填充文件
- 在填充器文件中可以使用DB门面去新增数据。
public function run() {
//
$data = [
[
"paper_name" => "五年高考,三年模拟",
"start_time" => strtotime("+7 days"),
"duration" => "120",
],
[
"paper_name" => "黄冈密卷",
"start_time" => strtotime("+7 days"),
"duration" => "120",
],
[
"paper_name" => "衡水期中卷",
"start_time" => strtotime("+7 days"),
"duration" => "120",
]
];
DB::table()->insert($data);
}
③ 执行填充文件
php .\artisan db:seed --class=PaperTableSeeder
三、会话控制
- session 默认存储在文件中。
- session 文件的目录:storage/framework/sessions。
- session 门面:
use Illuminate\Support\Facades\Session;
- session 也可以在视图中使用。
public function test13() {
// Session中存储一个变量
Session::put("name", "张三");
// 获取Session中的变量
echo Session::get("name");
// 获取Session中的变量,如果不存在返回默认值
echo Session::get("age", 80);
echo Session::get("gender", function () {
return "沃尔玛购物袋";
});
// 获取Session中全部的相关信息
var_dump(Session::all());
// 检查变量在Session中是否存在
var_dump(Session::has("name"));
// 删除Session中的变量
Session::forget("name");
// 删除Session中的全部变量
Session::flush();
}
四、缓存机制
- 缓存配置位于 config/cache.php
1. 设置缓存
put()
如果键已经存在,则直接覆盖原来的值。- 有效期必须设置,单位是分钟。
Cache::put('key', 'value', $minutes);
add()
如果键存在,返回false。如果不存在则添加成功返回true。
Cache::add('key', 'value', $minutes);
forever()
用于持久化存储到缓存,必须使用forget
方法从缓存中删除。
Cache::forever('key', 'value');
remember()
如果键不存在,则获取默认值,并把变量设置为默认值。
Cache::remember("time", 10, function (){
return date("Y-m-d H:i:s");
});
2. 获取缓存
get()
获取变量。
Cache::get("name", "没有用户名");
Cache::get("age", function (){
return "没有设置年龄";
});
has()
判断某个变量是否存在
Cache::has("gender")
3. 删除缓存
pull()
从缓存中获取之后再删除,常用于一次性存储。
Cache::pull("age")
-
forget()
直接删除。 -
flush()
清楚所有缓存,并删除对应的目录。
Cache::flush();
4. 计数器
increment
和decrement
用于调整缓存中的整型数值。一般用于计数器。
Cache::increment("count");
Cache::increment("count", 2);
Cache::decrement("count");
Cache::decrement("count", 2);