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

2023-10-27

一、文件上传

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);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

  • 如何防止 CakePHP 中重复表单提交?

    我发现 CakePHP 中的安全组件通过将令牌作为隐藏值添加到表单中来帮助防止 CSRF 我想知道是否有办法防止使用此组件或其他组件 帮助器重复表单提交 在之前的项目中 我使用了保存在会话中的唯一哈希值 该哈希值会在提交时读取并删除 重复提
  • 在 Kohana 中,可以触发 404 错误吗?

    我有一个名为articles 它创建从数据库获取相关数据的文章模型 我想 如果我调用的方法返回false 触发 404 错误 这是我到目前为止所拥有的 articleName this gt uri gt segment articles
  • PMA 4.5.2.0 file_exists():open_basedir 限制生效

    从 PPA 在我的 Ubuntu 服务器上安装 phpMyAdmin 后 https launchpad net nijel archive ubuntu phpmyadmin https launchpad net nijel archi
  • PHP mail() 函数不发送邮件

    我有一个小问题 我正在使用一个工作脚本 在我的测试帐户 共享服务器上工作 使用 mail 函数通过 PHP 发送邮件 我刚刚得到了一个专用服务器 但我还无法让该功能发挥作用 在过去的 10 个小时左右的时间里 我阅读了有关 BIND 用于
  • 更新重复密钥上的复合密钥 [重复]

    这个问题在这里已经有答案了 我需要更新新行 如果两者都满足 date dat and empId who 作为复合键 但如果其中之一或两者不同 则插入 sql INSERT INTO history SET endtimestamp now
  • 智能位置表单字段

    我的用户注册表单上有一个文本字段location 我本质上希望这个字段能够根据 Google 地图 或同等地图 进行验证 只允许有效位置通过 最好采用类似的格式滑铁卢 伦敦 or 伦敦 英国 要求 除了位置名称之外 我还想返回该位置中心的坐
  • 我如何知道请求是否来自 flash swf?

    我有一个用 flash 开发的应用程序 我需要访问一些 php 文件 因此 如果访问来自 swf 则 php 文件会返回一些数据 如何判断请求是否来自Flash 无需将 get post 变量传递给 php 可能是用户代理 推荐人 请记住
  • 从twitter api实体参数php获取图像url

    我正在尝试通过实体参数使用 php 获取并显示在推文中发布的图像 我的 url 中有 include entities 可以看到返回的 json 中的实体 在我的 foreach 循环中 我正在执行以下操作 foreach results
  • 使用 PHP/COM/ADSI/LDAP 更改 AD 密码

    我已经被这个问题困扰了好几天了 我尝试了各种解决方案均无济于事 请帮忙 Problem 我们有两个域控制器 它们不属于我们的管理范围 我们能够通过端口 389 上的 LDAP 进行连接 但无法通过端口 636 安全连接 我们正在开发一个系统
  • 基本表创建 fpdf

    我找不到使用 fpdf 制作表格并从 mysql 数据库获取数据的合适教程 我只是想知道如何创建一个 我在网上尝试示例时遇到了很多错误 例如 我有 名字 中间名 姓氏 年龄 和 电子邮件 列 如何使用 fpdf 创建表格并回显数据库中的条目
  • Laravel 5.4^ - 如何自定义通知电子邮件布局?

    我正在尝试自定义通过电子邮件发送通知时使用的 HTML 电子邮件布局 我已经发布了邮件和通知视图 php artisan vendor publish tag laravel mail php artisan vendor publish
  • Javascript 函数与 php 一样吗?

    我在网站上使用 WebIM 提供聊天支持 我希望能够在客户端启动聊天会话时设置一个计时器 如果操作员 技术人员在 x 秒内没有响应 我希望页面重定向到客户端可以留言的另一个页面 有点像 请稍等 我们尝试联系您 这样 如果所有技术人员都太忙或
  • 使用 HTTP-Basic 身份验证发出 HTTP GET 请求

    我需要为我正在开发的 Flash Player 项目构建一个代理 我只需要使用 HTTP Basic 身份验证向另一个 URL 发出 HTTP GET 请求 并提供来自 PHP 的响应 就好像 PHP 文件是原始源一样 我怎样才能做到这一点
  • 将 PHP mcrypt 与 Rijndael/AES 结合使用

    我正在尝试使用 php 中的 mcrypt 和密码 Rijndael 加密一些文本消息 但我不确定 MCRYPT MODE modename 根据 PHP 手册 这些可用 ecb cbc cfb ofb nofb 或 stream 但我读到
  • 如何计算加权平均值?

    我的语言是PHP 但是算法应该是相当通用的 我有一个关联数组 比方说 评级和评级次数 ratings array 1 gt 1 2 gt 3 3 gt 6 4 gt 3 5 gt 3 这相当于 1 2 2 2 3 3 3 3 3 3 4 4
  • 如何读取 XML 文件并从中获取值以在 PHP 编码的 HTML 页面中显示

    我有一个 XML 文件 其中有一些重复的标签 其中包含不同的值 我需要获取这些值并显示在我的网页中 请帮助我得到这个 如果您使用 PHP5 可以查看 SimpleXML 您可以在这里找到介绍教程 http www w3schools com
  • 从 PDO 准备好的语句中获取原始 SQL 查询字符串

    在准备好的语句上调用 PDOStatement execute 时 有没有办法让原始 SQL 字符串执行 出于调试目的 这将非常有用 我假设您的意思是您想要最终的 SQL 查询 并将参数值插入其中 我知道这对于调试很有用 但这不是准备好的语
  • 访客客户检查 Woocommerce 订单账单电子邮件时可享受首单折扣

    通过对照正在处理和已完成的订单检查来宾客户的电子邮件地址 如果电子邮件没有订单 我想给来宾 首单折扣 如果这能在客人输入电子邮件时发生 那就太好了 我想我已经成功制作了折扣代码 现在我请求帮助合并这两个代码 使其一切正常 这是折扣代码 ad
  • 在 Apache 服务器上将特定的 .htm 页面处理为 .php [重复]

    这个问题在这里已经有答案了 我正在为 Apache 服务器编程 并且只需要将一个特定的 html 页面 例如 first htm 作为 PHP 脚本进行处理 可以设置吗 SetHandler http httpd apache org do
  • 高效插入和更新时检查唯一性

    我的员工表中有 2 列 每列值必须是唯一的 staff code staff name staff id staff code staff name 1 MGT Management 2 IT IT staff 当向表中插入或更新项目时 我

随机推荐

  • 不懂就问--Java基本数据类型与数组(定义了int型二维数组a[6][7]后,数组元素a[3][4]前的数组元素个数)案例分析

    首先要知道java中的数组是线性排列的 其次要知道数组的初始标度为0 例如定义了一个二维数组 a 1 2 则数组详细为 0 0 0 1 0 2 1 0 1 1 1 2 共6个数组元素 所以可知 1 是为行 共两行 因为是从0开始数起 2 是
  • 数据库操作语言:DML(data management lauguage)

    一 DML操作语言 DML 对表中的数据进行操作的语言 关键字 insert update delete select 假设我们使用创建表的语句创建了一个student表 然后对该表进行操作 create table classroom c
  • 【MySQL】8.0 存储引擎

    存储引擎 MySQL体系结构 1 连接层 最上层是一些客户端和链接服务 包含本地sock 通信和大多数基于客户端 服务端工具实现的类似于TCP IP的通信 主要完成一些类似于连接处理 授权认证 及相关的安全方案 在该层上引入了线程池的概念
  • 测试用例如何编写?史上最全接口测试-用例编写设计总结(测试点)

    目录 导读 前言 一 Python编程入门到精通 二 接口自动化项目实战 三 Web自动化项目实战 四 App自动化项目实战 五 一线大厂简历 六 测试开发DevOps体系 七 常用自动化测试工具 八 JMeter性能测试 九 总结 尾部小
  • wireshark通常无法抓取交换机所有端口报文

    Wireshark 是一种网络分析工具 它通常在计算机的网络接口上进行数据包捕获和分析 然而 Wireshark 默认情况下无法直接捕获交换机所有端口的报文 交换机是一种网络设备 它在局域网内转发数据包 根据目的MAC地址将数据包仅发送到目
  • 使用宏定义判断编译器类型、版本、操作系统

    使用宏定义如下 GCC编译器 ifdef GNUC if GNUC gt 3 GCC3 0以上 MSVC编译器 ifdef MSC VER if MSC VER gt 1000 VC 4 0以上 if MSC VER gt 1100 VC
  • z-index最大值,最小值,在不同浏览器的取值

    z index最大值 IE FireFox Safari的z index最大值是2147483647 Opera的最大值是2147483584 IE Safari Opera在超过其最大值时按最大值处理 FireFox 在超过最大值时会数据
  • unity3d 游戏对象消失三种方法的区别(enabled/Destroy/active)

    gameObject renderer enabled 是控制一个物体是否在屏幕上渲染或显示 而物体实际还是存在的 只是想当于隐身 而物体本身的碰撞体还依然存在的 GameObject Destroy 表示移除物体或物体上的组件 代表销毁该
  • AOP拦截记录日志

    首先对于AOP切面编程 我也是刚学习 了解不深 这边先引用老张的博客 方便大家学习 首先想一想 如果有这么一个需求 要记录整个项目的接口和调用情况 当然如果只是控制器的话 还是挺简单的 直接用一个过滤器或者一个中间件 还记得咱们开发Swag
  • linux 服务器间通信,Linux 下的进程间通信:套接字和信号

    原标题 Linux 下的进程间通信 套接字和信号 Linux 中国 学习在 Linux 中进程是如何与其他进程进行同步的 Marty Kalin 本篇是 Linux 下 IPC 系列的第三篇同时也是最后一篇文章 聚焦在通过共享存储 文件和共
  • Unity 3D实现血量增加减少

    首先先看一下效果图 这里呢我是通过按钮点击增减血量 当真正的开发游戏的时候 就是通过个各种药水来对AI进行血量的增加减少 场景塔搭建就比较简单了 就是一个NGUI 放置一张图片 HUDText ht UISprite sprite bool
  • xpath无法定位tbody

    原因是需要定位的tbody标签是浏览器加上去的 html中的tbody标签是不需要一定要写的 链接直接请求到的html是没有需要定位的tbody标签的 所以删掉xpath中的tbody标签就可以了 华东师范大学招生办 高考分数查询https
  • CNN卷积神经网络实现-人脸性别识别模型-可视化各层卷积特征

    本文主要是实现了根据人脸识别性别的卷积神经网络 并对卷积过程中的提取特征进行了可视化 Github地址 https github com chenlinzho 卷积神经网络 卷积神经网络最早是为了解决图像识别的问题 现在也用在时间序列数据和
  • Java踩坑笔记 —— base64转换为图片后图片显示不全

    Java踩坑笔记 base64转换为图片后图片显示不全 前言 解决思路 案例代码 结束语 前言 最近在开发项目中 发现base64转换图片时 出现了图片显示不全 例如如下这样 可以明显看到图片部分地区被遮挡 解决思路 显示图片有误的情况下
  • Apache Superset 漏洞导致服务器易遭RCE攻击

    聚焦源代码安全 网罗国内外最新资讯 编译 代码卫士 Apache Superset 修复了两个漏洞 本可导致攻击者在受影响系统上获得远程代码执行权限 Apache Superset 更新版本 2 1 1 修复了两个漏洞CVE 2023 39
  • Makefile 函数 -if

    if 函数 if 函数的语法是 if
  • Python网络爬虫入门篇

    1 Python爬虫基本流程 a 发送请求 使用http库向目标站点发起请求 即发送一个Request Request包含 请求头 请求体等 Request模块缺陷 不能执行JS 和CSS 代码 b 获取响应内容 如果requests的内容
  • 为OpenWrt添加service,自启动问题

    记得去年 写过一个程序 是运行在OpenWrt上的 想让程序开机自启动 最后费了9牛二虎之力 模仿别人的总算写出来了 但是一直没有明白为什么要这样 刚刚看open的官网 一下子恍然大悟 网址如 http wiki openwrt org d
  • YARN的工作机制

    lt 1 gt 主要作用 强化控制和使用资源管理功能 lt 2 gt 工作机制 1 MapReduce提交到客户端所在节点 2 客户端向资源管理器提交申请 在将应用程序返回给客户端 将运行资源提交到HDFS上 提交完毕后申请运行 3 RM将
  • Laravel框架06:文件、迁移填充、会话、缓存

    Laravel框架06 文件 迁移填充 会话 缓存 一 文件上传 1 文件上传表单 2 上传业务处理 3 全部代码 二 数据表的迁移与填充 1 迁移文件 创建迁移文件 编写迁移文件 执行迁移文件 回滚迁移文件 2 填充 种子 文件 创建填充