当前位置: 首页 > 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…...

内存分配函数malloc kmalloc vmalloc

内存分配函数malloc kmalloc vmalloc malloc实现步骤: 1)请求大小调整:首先,malloc 需要调整用户请求的大小,以适应内部数据结构(例如,可能需要存储额外的元数据)。通常,这包括对齐调整,确保分配的内存地址满足特定硬件要求(如对齐到8字节或16字节边界)。 2)空闲…...

K8S认证|CKS题库+答案| 11. AppArmor

目录 11. AppArmor 免费获取并激活 CKA_v1.31_模拟系统 题目 开始操作&#xff1a; 1&#xff09;、切换集群 2&#xff09;、切换节点 3&#xff09;、切换到 apparmor 的目录 4&#xff09;、执行 apparmor 策略模块 5&#xff09;、修改 pod 文件 6&#xff09;、…...

VB.net复制Ntag213卡写入UID

本示例使用的发卡器&#xff1a;https://item.taobao.com/item.htm?ftt&id615391857885 一、读取旧Ntag卡的UID和数据 Private Sub Button15_Click(sender As Object, e As EventArgs) Handles Button15.Click轻松读卡技术支持:网站:Dim i, j As IntegerDim cardidhex, …...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院挂号小程序

一、开发准备 ​​环境搭建​​&#xff1a; 安装DevEco Studio 3.0或更高版本配置HarmonyOS SDK申请开发者账号 ​​项目创建​​&#xff1a; File > New > Create Project > Application (选择"Empty Ability") 二、核心功能实现 1. 医院科室展示 /…...

如何将联系人从 iPhone 转移到 Android

从 iPhone 换到 Android 手机时&#xff0c;你可能需要保留重要的数据&#xff0c;例如通讯录。好在&#xff0c;将通讯录从 iPhone 转移到 Android 手机非常简单&#xff0c;你可以从本文中学习 6 种可靠的方法&#xff0c;确保随时保持连接&#xff0c;不错过任何信息。 第 1…...

相机从app启动流程

一、流程框架图 二、具体流程分析 1、得到cameralist和对应的静态信息 目录如下: 重点代码分析: 启动相机前,先要通过getCameraIdList获取camera的个数以及id,然后可以通过getCameraCharacteristics获取对应id camera的capabilities(静态信息)进行一些openCamera前的…...

leetcodeSQL解题:3564. 季节性销售分析

leetcodeSQL解题&#xff1a;3564. 季节性销售分析 题目&#xff1a; 表&#xff1a;sales ---------------------- | Column Name | Type | ---------------------- | sale_id | int | | product_id | int | | sale_date | date | | quantity | int | | price | decimal | -…...

HTML前端开发:JavaScript 常用事件详解

作为前端开发的核心&#xff0c;JavaScript 事件是用户与网页交互的基础。以下是常见事件的详细说明和用法示例&#xff1a; 1. onclick - 点击事件 当元素被单击时触发&#xff08;左键点击&#xff09; button.onclick function() {alert("按钮被点击了&#xff01;&…...

有限自动机到正规文法转换器v1.0

1 项目简介 这是一个功能强大的有限自动机&#xff08;Finite Automaton, FA&#xff09;到正规文法&#xff08;Regular Grammar&#xff09;转换器&#xff0c;它配备了一个直观且完整的图形用户界面&#xff0c;使用户能够轻松地进行操作和观察。该程序基于编译原理中的经典…...

docker 部署发现spring.profiles.active 问题

报错&#xff1a; org.springframework.boot.context.config.InvalidConfigDataPropertyException: Property spring.profiles.active imported from location class path resource [application-test.yml] is invalid in a profile specific resource [origin: class path re…...