当前位置: 首页 > news >正文

Laravel框架03:DB类操作数据库

Laravel框架03:DB类操作数据库

  • 一、概述
  • 二、数据表的创建与配置
  • 三、增删改操作
    • 1. 增加信息
    • 2. 修改数据
    • 3. 删除数据
  • 四、查询操作
    • 1. 取出基本数据
    • 2. 取出单行数据
    • 3. 获取一个字段的值
    • 4. 获取多个字段的值
    • 5. 排序
    • 6. 分页
  • 五、执行任意的SQL语句

一、概述

  • 按照MVC的架构,对数据的操作应该放在Model中完成,但如果不使用Model,也可以用Laravel框架的DB类操作数据库。
  • 对于某些极其复杂的SQL,用Model难以完成。即可使用DB类去执行原生SQL。
  • 基本用法:DB::table('tableName')获取tableName表的实例。

二、数据表的创建与配置

  • 建立数据库和数据表

    CREATE DATABASE `test` CHARACTER SET 'utf8' COLLATE 'utf8_general_ci';
    use test;
    create table member(id int PRIMARY KEY auto_increment,name VARCHAR(32) not null,age TINYINT UNSIGNED not null,email VARCHAR(32) not null
    )ENGINE myisam charset utf8;
    
  • 数据库在Laravel中的配置
    在这里插入图片描述

  • 在config/database中默认开启了严格模式。开发时可以关闭。
    在这里插入图片描述

  • 在config/app.php中已经引入了DB门面
    在这里插入图片描述

三、增删改操作

1. 增加信息

  • 对数据库中的某个表增加数据主要有两个函数
    1. insert() 可以增加一条或多条,返回值是布尔类型。
    2. insertGetID() 只能添加一条数据,返回自增的ID。
  • 添加一条数据
public function add() {$db = DB::table("member");$result = $db->insert(['name' => "冬梅",'age' => 18,'email' => "dongmei@qq.com"]);dd($result);
}
  • 添加多条数据
public function add() {$db = DB::table("member");$result = $db->insert([['name' => "冬梅",'age' => 18,'email' => "dongmei@qq.com"],['name' => '秋雅','age' => 19,'email' => "qiuya@qq.com"]]);dd($result);
}
  • 添加一条记录并获取ID
public function add() {$db = DB::table("member");$result = $db->insertGetId(["name" => "夏洛","age" => 20,"email" => "xialuo@qq.com"]);dd($result);
}

2. 修改数据

  • 数据修改可以使用 update()、increment()、decrement() 实现。

    • update 可以修改整个记录中的全部字段,返回影响行数。
    • increment、decrement修改数字字段(递增或递减)
  • 使用 where(字段, 运算符, 值) 限定数据。如果运算符为=,第二个参数可以不写。

    • where()->where()…:这个语法是并且(and)关系。
    • where()->orWhere()…:这个语法是或者(or)关系。
  • 修改ID为1的名字和年龄

    public function update() {$db = DB::table("member");$result = $db->where("id", "=", 1)->update(["name" => "张三丰",'age' => 200]);dd($result);
    }
    
  • 把ID为2的年龄增加10。

    public function update() {$db = DB::table("member");# 加10$result = $db->where("id", 2)->increment('age', 10);# 减10$result = $db->where("id", 2)->decrement('age', 10);dd($result);
    }
    

3. 删除数据

  • 在删除中,有两种方式:物理删除、逻辑删除(修改为空)
  • 物理删除:DB::table('tableName')->where('id', 1)->delete();。返回影响行数。
  • 清空整个表:DB::table('tableName')->truncate();

四、查询操作

1. 取出基本数据

  • 取出表中所有数据:DB::table('member')->get();。返回值是一个Collection(集合)对象。

    public function select() {$db = DB::table("member");$result = $db->get();dd($result);
    }
    

    在这里插入图片描述

  • 遍历Collection对象,所获得的也是一个对象。

    public function select() {$db = DB::table("member");$result = $db->get();foreach ($result as $index => $item) {echo "id是:{$item->id},名字是:{$item->name},邮箱是:{$item->email}<br>";}
    }
    

    在这里插入图片描述

  • 同样能使用 where 和 orWhere 限定查询范围。

2. 取出单行数据

  • 使用 first 取出一个单行对象。等价于 limit 1。$db->first();
$data = $db->where('age', ">", 25)->first();
dd($data);

3. 获取一个字段的值

  • 使用 value('字段名') 获取具体的值。
$data = $db->where('id', 1)->value("name");
dd($data);

4. 获取多个字段的值

  • 使用 select('字段名') 获取多个字段的值。
$data = $db->select('name as 名字', "email")->get();
dd($data);

在这里插入图片描述

5. 排序

  • 使用orderBy() 对数据进行排序
$data = $db->orderBy('age', 'desc')->get();
dd($data);

6. 分页

  • DB::table('member')->limit(3)->offset(2)->get();
    • limit:限制输出的行数
    • offset:从什么地方开始
    • 组合起来等价于:limit 5, 5
  • paginate 方法根据用户浏览的当前页码,自动设置恰当的偏移量 offset 和限制数 limit。DB::table('users')->paginate(15);

五、执行任意的SQL语句

  1. 执行任意的修改:DB::statement("SQL语句");
  2. 执行任意的查询:DB::select("SQL语句");

相关文章:

Laravel框架03:DB类操作数据库

Laravel框架03&#xff1a;DB类操作数据库一、概述二、数据表的创建与配置三、增删改操作1. 增加信息2. 修改数据3. 删除数据四、查询操作1. 取出基本数据2. 取出单行数据3. 获取一个字段的值4. 获取多个字段的值5. 排序6. 分页五、执行任意的SQL语句一、概述 按照MVC的架构&a…...

数据结构期末复习总结(前章)

作者的话 作为一名计算机类的学生&#xff0c;我深知数据结构的重要性。在期末复习前&#xff0c;我希望通过这篇博客给大家一些复习建议。希望能帮助大家夯实数据结构的基础知识&#xff0c;并能够更好地掌握数据结构和算法的应用。 一、绪论 数据&#xff1a;信息的载体&am…...

设计环形队列

文章目录1.思路分析1.1队列空满分析1.2出队分析2.循环队列设计1.思路分析 1.1队列空满分析 首先我们假设一个长度为4的环形队列 队头front 队尾rear 当队列为空时 frontrear 当队列满时 frontrear 所以我们无法判断队列是满的或者空的 因此我们多加入一个空间使队列长度为5&am…...

面向对象之-接口鉴权

1 需求 1.1 需求背景 为了保证接口调用的安全性&#xff0c;我们希望设计实现一个接口调用鉴权功能&#xff0c;只有经过认证之后的系统才能调用我们的接口&#xff0c;没有认证过的系统调用我们的接口会被拒绝。 2 需求分析 2.1 基础分析 对于如何做鉴权这样一个问题&…...

Python 多进程多线程线程池进程池协程

目录 一、线程与进程很简单的介绍 1.1 线程与进程的区别 二、多进程Process 2.1 多进程与多线程的区别 2.2 多进程为啥要使用队列 2.3 控制进程运行顺序 2.3.1 join &#xff0c; 2.3.1 daemon 守护进程 2.4 进程id 2.5 进程 存活状态is_alive() 2.5 实现自定义多…...

【自然语言处理】基于句子嵌入的文本摘要算法实现

基于句子嵌入的文本摘要算法实现人们在理解了文本的含义后&#xff0c;很容易用自己的话对文本进行总结。但在数据过多、缺乏人力和时间的情况下&#xff0c;自动文本摘要则显得至关重要。一般使用自动文本摘要的原因包括&#xff1a; 减少阅读时间根据摘要&#xff0c;选择自…...

fiddler抓包

一、工具介绍Fiddler是一个通过代理的方式来进行抓包工具&#xff0c;运行时会在本地建立一个代理服务&#xff0c;默认地址&#xff1a;127.0.0.1:8888。Fiddler开启之后&#xff0c;配置本机代理&#xff0c;再打开IE浏览器&#xff0c;IE的PROXY会自动变成127.0.0.1:8888&am…...

【Linux】网络套接字编程

前言 在掌握一定的网络基础&#xff0c;我们便可以先从代码入手&#xff0c;利用UDP协议/TCP协议进行编写套接字程序&#xff0c;明白网络中服务器端与客户端之间如何进行连接并且通信的。 目录 一、了解源目的IP、端口、网络字节序、套接字 端口号&#xff1a; 套接字&…...

break与continue关键字

1.概述 不知道大家有没有这样一种感受哈&#xff0c;有的时候容易混淆break语句和continue语句的用法&#xff0c;总是模棱两可&#xff0c;不敢确定自己是否使用正确了。正好&#xff0c;我们本篇的重点就是break和continue关键字的用法。 2.使用场景 Java中为啥会诞生break…...

kafka使用入门案例与踩坑记录

每次用到kafka时都会出现各种奇怪的问题&#xff0c;综合实践&#xff0c;下面汇总下主要操作步骤&#xff1a; Docker镜像形式启动 zookeeper启动 docker run -d --name zookeeper -p 2181:2181 -t wurstmeister/zookeeperkafka启动 docker run --name kafka01 -p 9092:909…...

系统启动太慢,调优后我直呼Nice

问题背景最近在负责一个订单系统的业务研发&#xff0c;本来不是件困难的事。但是服务的启动时间很慢&#xff0c;慢的令人发指。单次启动的时间约在10多分钟左右&#xff0c;基本一次迭代、开发&#xff0c;大部分的时间都花在了启动项目上。忍无可忍的我&#xff0c;终于决定…...

java知识点

文章目录异常写法JVM加载反射访问private调用方法动态代理注解元数据&#xff1a;TargetRetention元注解泛型编写泛型擦拭法局限通配符无限定通配符(<?>)集合重写方法和实现类IO流字节与字符转换同步和异步可以设置编码的类Print*类Files时间与日期时区一种二种三种异常…...

文件的打开关闭和顺序读写

目录 一、文件的打开与关闭 &#xff08;一&#xff09;文件指针 &#xff08;二&#xff09; 文件的打开和关闭 二、文件的顺序读写 &#xff08;一&#xff09;fputc 1. 介绍 2. 举例 &#xff08;二&#xff09;fgetc 1. 介绍 2. 举例1 3. 举例2 &#xff08;三&…...

(十八)操作系统-进程互斥的软件实现方法

文章目录一、知识总览二、单标志法三、双标志先检查法四、双标志后检查法五、Peterson算法六、总结一、知识总览 二、单标志法 算法思想&#xff1a;两个进程在访问临界区后&#xff0c;会把使用临界区的权限转交给另一个进程。也就是说每个进程进入临界区的权限只能被另一个进…...

2023年三月份图形化一级打卡试题

活动时间 从2023年3月1日至3月21日&#xff0c;每天一道编程题。 本次打卡的规则如下&#xff1a; 小朋友每天利用10~15分钟做一道编程题&#xff0c;遇到问题就来群内讨论&#xff0c;我来给大家答疑。 小朋友做完题目后&#xff0c;截图到朋友圈打卡并把打卡的截图发到活动群…...

linux 防火墙管理-firewalld

什么是Firewalld 当前很多linux系统中都默认使用 firewalld&#xff08;Dynamic Firewall Manager of Linux systems&#xff0c;Linux系统的动态防火墙管理器&#xff09;服务作为防火墙配置管理工具。 “firewalld”是firewall daemon。它提供了一个动态管理的防火墙&#x…...

2023年最新大厂开发面试题(滴滴,华为,京东,腾讯,头条)

2023年最新大厂开发面试题&#xff01;&#xff01;&#xff01; 滴滴篇 B树、B-树的区别? 数据库隔离级别&#xff0c;幻读和不可重复读的区别&#xff1f; 有 hell, well, hello, world 等字符串组&#xff0c;现在问能否拼接成 helloworld&#xff0c;代码实现。 快排算…...

2023年三月份图形化三级打卡试题

活动时间 从2023年3月1日至3月21日&#xff0c;每天一道编程题。 本次打卡的规则如下&#xff1a; 小朋友每天利用10~15分钟做一道编程题&#xff0c;遇到问题就来群内讨论&#xff0c;我来给大家答疑。 小朋友做完题目后&#xff0c;截图到朋友圈打卡并把打卡的截图发到活动群…...

蓝桥杯算法模板

模拟散列表拉链法import java.io.*; import java.util.*; public class a1 {static int n;static int N100003;static int[] hnew int[N];static int[] enew int[N];static int[] nenew int[N]; static int idx; static void insert(int x){int k(x%NN)%N;e[idx]x;ne[idx]h[k];…...

python之并发编程

一、并发编程之多进程 1.multiprocessing模块介绍 python中的多线程无法利用多核优势&#xff0c;如果想要充分地使用多核CPU的资源&#xff08;os.cpu_count()查看&#xff09;&#xff0c;在python中大部分情况需要使用多进程。Python提供了multiprocessing。 multiprocess…...

告别公式复制烦恼!LaTeX2Word-Equation让跨平台公式处理效率提升10倍

告别公式复制烦恼&#xff01;LaTeX2Word-Equation让跨平台公式处理效率提升10倍 【免费下载链接】LaTeX2Word-Equation Copy LaTeX Equations as Word Equations, a Chrome Extension 项目地址: https://gitcode.com/gh_mirrors/la/LaTeX2Word-Equation 痛点诊断&#…...

ChatGLM3-6B-128K部署指南:Ollama环境配置避坑大全

ChatGLM3-6B-128K部署指南&#xff1a;Ollama环境配置避坑大全 本文面向需要处理长文本任务的开发者和研究者&#xff0c;手把手教你如何快速部署ChatGLM3-6B-128K模型&#xff0c;避开环境配置中的常见坑点。 1. 环境准备与快速部署 在开始部署之前&#xff0c;我们先简单了解…...

大脑极简原理:比冯·诺依曼架构还简单的电磁路由网络 ——为什么意识和智能会从“对称判断”里自然涌现

前言&#xff1a;被复杂化的真相——大脑其实简单到爆我们从小被灌输一个观念&#xff1a;大脑是宇宙中最复杂的系统&#xff0c;860亿神经元、百万亿突触、无数神经递质&#xff0c;像一台精密到无法拆解的超级计算机。神经科学论文越写越长&#xff0c;模型越来越复杂&#x…...

Anthropic提示工程教程:从入门到精通的完整指南

Anthropic提示工程教程&#xff1a;从入门到精通的完整指南 【免费下载链接】prompt-eng-interactive-tutorial Anthropics Interactive Prompt Engineering Tutorial 项目地址: https://gitcode.com/GitHub_Trending/pr/prompt-eng-interactive-tutorial Anthropic的交…...

OpenClaw调试技巧:QwQ-32B任务失败的根本原因分析

OpenClaw调试技巧&#xff1a;QwQ-32B任务失败的根本原因分析 1. 问题背景与诊断框架 上周我在尝试用OpenClaw对接本地部署的QwQ-32B模型时&#xff0c;遇到了一个典型问题&#xff1a;简单的文件整理任务总是执行到一半就中断&#xff0c;控制台只显示"模型响应超时&qu…...

以太网MAC与PHY接口技术详解

以太网PHY、MAC及其通信接口技术解析1. 以太网接口架构概述1.1 基本组成结构以太网接口电路从硬件角度可分为两大核心组件&#xff1a;MAC控制器&#xff08;Media Access Control&#xff09;&#xff1a;负责数据链路层的媒体访问控制PHY芯片&#xff08;Physical Layer&…...

vLLM-v0.17.1参数详解:--disable-log-stats与--log-level日志调优

vLLM-v0.17.1参数详解&#xff1a;--disable-log-stats与--log-level日志调优 1. vLLM框架简介 vLLM是一个专为大型语言模型(LLM)设计的高性能推理和服务库&#xff0c;以其出色的吞吐量和易用性著称。这个项目最初由加州大学伯克利分校的天空计算实验室开发&#xff0c;现在…...

合宙 MCP 工具:TRAE AI 自然语言控制 Luatools 实操

合宙MCP工具基于 MCP 协议&#xff0c;实现 AI 大模型与 Luatools 的无缝连接&#xff0c;开发者通过简单 JSON 配置&#xff0c;就能在 TRAE 编辑器用自然语言操控 Luatools 完成固件下载、日志获取等操作&#xff0c;告别手动烧录的繁琐。 核心能力&#xff1a; 固件自动烧录…...

G-Helper:华硕笔记本电池健康管理的终极轻量化解决方案

G-Helper&#xff1a;华硕笔记本电池健康管理的终极轻量化解决方案 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops. Control tool for ROG Zephyrus G14, G15, G16, M16, Flow X13, Flow X16, TUF, Strix, Scar and other models 项目地…...

从‘丐版’到‘神板’:深度拆解Raspberry Pi Zero 2 W的散热设计与性能压榨指南

从‘丐版’到‘神板’&#xff1a;深度拆解Raspberry Pi Zero 2 W的散热设计与性能压榨指南 当一款信用卡大小的开发板搭载四核处理器时&#xff0c;散热与性能的平衡便成为硬件极客们最热衷的挑战。Raspberry Pi Zero 2 W以不到15美元的定价&#xff0c;却藏着令人惊喜的工程智…...