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

51c自动驾驶~合集58

我自己的原文哦~ https://blog.51cto.com/whaosoft/13967107 #CCA-Attention 全局池化局部保留&#xff0c;CCA-Attention为LLM长文本建模带来突破性进展 琶洲实验室、华南理工大学联合推出关键上下文感知注意力机制&#xff08;CCA-Attention&#xff09;&#xff0c;…...

前端倒计时误差!

提示:记录工作中遇到的需求及解决办法 文章目录 前言一、误差从何而来?二、五大解决方案1. 动态校准法(基础版)2. Web Worker 计时3. 服务器时间同步4. Performance API 高精度计时5. 页面可见性API优化三、生产环境最佳实践四、终极解决方案架构前言 前几天听说公司某个项…...

工程地质软件市场:发展现状、趋势与策略建议

一、引言 在工程建设领域&#xff0c;准确把握地质条件是确保项目顺利推进和安全运营的关键。工程地质软件作为处理、分析、模拟和展示工程地质数据的重要工具&#xff0c;正发挥着日益重要的作用。它凭借强大的数据处理能力、三维建模功能、空间分析工具和可视化展示手段&…...

python报错No module named ‘tensorflow.keras‘

是由于不同版本的tensorflow下的keras所在的路径不同&#xff0c;结合所安装的tensorflow的目录结构修改from语句即可。 原语句&#xff1a; from tensorflow.keras.layers import Conv1D, MaxPooling1D, LSTM, Dense 修改后&#xff1a; from tensorflow.python.keras.lay…...

C/C++ 中附加包含目录、附加库目录与附加依赖项详解

在 C/C 编程的编译和链接过程中&#xff0c;附加包含目录、附加库目录和附加依赖项是三个至关重要的设置&#xff0c;它们相互配合&#xff0c;确保程序能够正确引用外部资源并顺利构建。虽然在学习过程中&#xff0c;这些概念容易让人混淆&#xff0c;但深入理解它们的作用和联…...

Chrome 浏览器前端与客户端双向通信实战

Chrome 前端&#xff08;即页面 JS / Web UI&#xff09;与客户端&#xff08;C 后端&#xff09;的交互机制&#xff0c;是 Chromium 架构中非常核心的一环。下面我将按常见场景&#xff0c;从通道、流程、技术栈几个角度做一套完整的分析&#xff0c;特别适合你这种在分析和改…...

MySQL的pymysql操作

本章是MySQL的最后一章&#xff0c;MySQL到此完结&#xff0c;下一站Hadoop&#xff01;&#xff01;&#xff01; 这章很简单&#xff0c;完整代码在最后&#xff0c;详细讲解之前python课程里面也有&#xff0c;感兴趣的可以往前找一下 一、查询操作 我们需要打开pycharm …...

热烈祝贺埃文科技正式加入可信数据空间发展联盟

2025年4月29日&#xff0c;在福州举办的第八届数字中国建设峰会“可信数据空间分论坛”上&#xff0c;可信数据空间发展联盟正式宣告成立。国家数据局党组书记、局长刘烈宏出席并致辞&#xff0c;强调该联盟是推进全国一体化数据市场建设的关键抓手。 郑州埃文科技有限公司&am…...

第八部分:阶段项目 6:构建 React 前端应用

现在&#xff0c;是时候将你学到的 React 基础知识付诸实践&#xff0c;构建一个简单的前端应用来模拟与后端 API 的交互了。在这个阶段&#xff0c;你可以先使用模拟数据&#xff0c;或者如果你的后端 API&#xff08;阶段项目 5&#xff09;已经搭建好&#xff0c;可以直接连…...

用递归算法解锁「子集」问题 —— LeetCode 78题解析

文章目录 一、题目介绍二、递归思路详解&#xff1a;从决策树开始理解三、解法一&#xff1a;二叉决策树 DFS四、解法二&#xff1a;组合式回溯写法&#xff08;推荐&#xff09;五、解法对比 递归算法是编程中一种非常强大且常见的思想&#xff0c;它能够优雅地解决很多复杂的…...