Laravel框架06:文件、迁移填充、会话、缓存

news2024/11/25 10:41:17

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. 计数器

  • incrementdecrement 用于调整缓存中的整型数值。一般用于计数器。
Cache::increment("count");
Cache::increment("count", 2);
Cache::decrement("count");
Cache::decrement("count", 2);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/564606.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++常用的支持中文的GUI库Qt 6之三: Qt 6的项目的发布

C常用的支持中文的GUI库Qt 6之三&#xff1a; Qt 6的项目的发布 本文接着上一篇“C常用的支持中文的GUI库Qt 6之二&#xff1a;项目的结构、资源文件的使用” https://blog.csdn.net/cnds123/article/details/130741807介绍&#xff0c;并使用其中的例子。 程序代码能正确编译…

【STL】list的使用

系列文章 学习C途中自然绕不过STL&#xff0c;在这个系列文章之中 我们讲了string的使用和string的模拟实现&#xff0c;以及vector的使用、vector的模拟实现。 感兴趣的可以翻翻看。 目录 系列文章 前言 默认成员函数 构造函数 拷贝构造 赋值重载 迭代器 容量查询 …

人人都能看懂的Spring源码解析,Spring声明式事务关于传播特性、事务挂起与恢复的处理

人人都能看懂的Spring源码解析&#xff0c;Spring声明式事务关于传播特性、事务挂起与恢复的处理 原理解析AbstractPlatformTransactionManager事务传播特性事务挂起与恢复通过DataSourceTransactionManager看事务挂起和恢复的具体实现 代码走读总结 往期文章&#xff1a; 人人…

LRU Cache

前言 哈喽&#xff0c;各位小伙伴大家好&#xff0c;本章内容为大家介绍计算机当中为了提高数据相互传输时的效率而引进的一种重要设计结构叫做LRU Cache,下面将为大家详细介绍什么是LRU Cache,以及它是如何是实现的&#xff0c;如何提升效率的。 1.什么是LRU Cache? LRU是L…

卷起来了?2023这三个项目直接让你原地起飞!

理论自学谁不会&#xff0c;理论知识跟实战项目实践相结合才是大问题&#xff1f; 还在发愁没有项目练手&#xff1f;还在发愁简历中的项目生搬硬凑&#xff1f;还在担心自己没实操过项目被面试官直接K.O? 这三个实战项目让你快人一步&#xff0c;总有一个适合你的&#xff…

数慧时空20年磨一剑:推出智能遥感云平台DIEY,自然资源多模态大模型“长城”,为地理信息产业提速

作者 | 伍杏玲 出品 | CSDN 据中国地理信息产业发展报告公布的数据&#xff0c;截至2020年末&#xff0c;行业从业单位13.8万家&#xff0c;从业人数336.6万&#xff0c;到2021年末&#xff0c;从业单位增加到16.4万家&#xff0c;从业人数增加到398万&#xff0c;产业规模越…

软件测试的未来?为什么越来越多的公司选择模糊测试

背景&#xff1a;近年来&#xff0c;随着信息技术的发展&#xff0c;各种新型自动化测试技术如雨后春笋般出现。其中&#xff0c;模糊测试&#xff08;fuzz testing&#xff09;技术开始受到行业关注&#xff0c;它尤其适用于发现未知的、隐蔽性较强的底层缺陷。这里&#xff0…

Eclipse MAT分析内存案例

前言 本文记录一次使用Eclipse MAT排查内存问题的案例&#xff0c;缘由是线上某服务OOM&#xff0c;排查得知jvm old区占满&#xff0c;但是gc了还是无法释放 实战 首先在线上服务器排查发现某应用占用了大量的内存&#xff0c;由一个ConcurrentHashMap对象造成的&#xff0…

【ArcGIS Pro二次开发】(31):ArcGIS Pro中的多线程

ArcGIS Pro与旧的ArcGIS桌面应用程序的显著不同之处在于&#xff0c;它采用多线程架构&#xff0c;可以有效的发挥多核CPU的优势。这使得二次开发工具的性能变得更好&#xff0c;但也对开发工作带来了更多的难点和挑战。 一、多线程需要注意的问题 一般情况下&#xff0c;为了…

尚硅谷MyBatis-Plus笔记001【简介、入门案例、基本CRUD】

视频地址&#xff1a;【尚硅谷】MyBatisPlus教程&#xff08;一套玩转mybatis-plus&#xff09;_哔哩哔哩_bilibili 尚硅谷MyBatis-Plus笔记01【简介、入门案例、基本CRUD】 尚硅谷MyBatis-Plus笔记02【】 尚硅谷MyBatis-Plus笔记03【】 尚硅谷MyBatis-Plus笔记04【】 尚硅谷…

非暴力沟通--日常沟通的技巧与实践

这篇文章是我在公司团队内部做的分享的演讲稿 开场白 大家好&#xff0c;我今天要分享的主题是非暴力沟通–日常沟通的技巧与实践。 介绍非暴力沟通这本书 分享这个主题的原因是我最近看了一本书&#xff0c;叫做《非暴力沟通》&#xff0c;这本书是美国一个叫做马歇尔卢森堡…

MFC CListCtrl 显示图片

MFC CListCtrl 显示图片 MFC CListCtrl 显示图片PreCreateWindow中设置风格没有起作用在OnCreate中设置CListCtrl的风格最合适在OnInitialUpdate中添加数据最合适需要设置CImageList&#xff0c;资源是我自己搞的一个图片资源ps:参考链接 MFC CListCtrl 显示图片 在使用MFC的C…

Codeforces Round 764 (Div. 3)

比赛链接 Codeforces Round 764 A. Plus One on the SubsetB. Make APC. Division by Two and PermutationD. Palindromes ColoringE. Masha-forgetful A. Plus One on the Subset Example input 3 6 3 4 2 4 1 2 3 1000 1002 998 2 12 11output 3 4 1题意&#xff1a; 你可…

怎么学习机械学习相关的技术?

学习机器学习相关技术的过程可以分为以下几个步骤&#xff1a; 掌握基本数学和统计知识&#xff1a; 机器学习建立在数学和统计学的基础上&#xff0c;了解线性代数、概率论、统计学等基本概念和方法对于理解机器学习算法至关重要。 学习编程和数据处理&#xff1a; 掌握一门…

kafka基础介绍

目录 前言&#xff1a; 一:kafka架构 1.kafka基础架构 2、kafka多副本架构 二、kafka基础概念 1、produce 2. Consumer 3、Broker ​ 4、Topic 5、Partition 6、Replicas 7、Offset 8、 AR 9、 ISR 10、OSR 11、HW 12、LEO 13、Lag 三、kafka特性 四、kafka…

总结加载Shellcode的各种方式

1.内联汇编加载 使用内联汇编只能加载32位程序的ShellCode&#xff0c;因为64位程序不支持写内联汇编 #pragma comment(linker, "/section:.data,RWE") //将data段的内存设置成可读可写可执行 #include <Windows.h>//ShellCode部分 unsigned char buf[] &qu…

FreeRTOS-任务通知详解

✅作者简介&#xff1a;嵌入式入坑者&#xff0c;与大家一起加油&#xff0c;希望文章能够帮助各位&#xff01;&#xff01;&#xff01;&#xff01; &#x1f4c3;个人主页&#xff1a;rivencode的个人主页 &#x1f525;系列专栏&#xff1a;玩转FreeRTOS &#x1f4ac;保持…

Spring Security入门

1. Spring Security 简介 Spring Security 是一个高度可定制的身份验证和访问控制框架&#xff0c;它基于 Spring 框架&#xff0c;并可与 Spring 全家桶无缝集成。该框架可以精确控制用户对应用程序的访问&#xff0c;控制用户的角色和权限等。 Spring Security 最早是由 Be…

C Primer Plus第三章编程练习答案

学完C语言之后&#xff0c;我就去阅读《C Primer Plus》这本经典的C语言书籍&#xff0c;对每一章的编程练习题都做了相关的解答&#xff0c;仅仅代表着我个人的解答思路&#xff0c;如有错误&#xff0c;请各位大佬帮忙点出&#xff01; 1.通过试验&#xff08;即编写带有此类…

第三节 HLMSEditor场景编辑器的编译

本节注意介绍下HLMSEditor场景编辑器的源码编译使用 一 安装依赖的资源 使用编译器为VS2019 X64&#xff0c;操作系统为WIN10&#xff0c;Ogre2.1&#xff0c;HLMSEditor 注意&#xff1a;为什么不用Ogre2.3?因为HLMSEditor版本为0.5.5&#xff0c;很久没有更新了&#xff0…