laravel的DB类数据库操作

1,140 阅读4分钟

一、DB类操作数据库(重点)

按照MVC的架构,对数据的操作应该放在Model中完成,但如果不使用Model,我们也可以用laravel框架提供的DB类操作数据库,而且,对于某些极其复杂的sql,用Model已经很难完成,需要开发者自己手写sql语句,使用DB类去执行原生sql。laravel中DB类的基本用法DB::table['tableName']获取操作tableName表的实例(对象)。

1.1、数据表的创建与配置

建数据的方式:

  1. sql语句
  2. 图形界面 phpMyAdmin Navicat

建立数据库: 在这里插入图片描述 创建表:

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;

在这里插入图片描述


1.2、数据库在laravel框架中的配置

.env文件里面

也可以在config目录下面的database.php文件里面配置。使用env函数,表示先从env文件里面获取,如果获取成功则使用,如果获取失败,则使用env函数的第二个参数。

1.3、在Test控制器中引入DB门面

在这里插入图片描述

在这里插入图片描述

1.3.1、定义增删改查需要的路由:

增加: /add 删除:/del 修改:/mod 查询:/select

在这里插入图片描述 1、增加信息(insert) 对数据库中的某个表增加数据主要有两个函数可以实现,分别是insert()insertGetId()

insert(数组) 可以同时添加一条或多条,返回值是布尔类型。 insertGetId(一维数组),只能添加一条数据,返回自增的id。

语法:DB::table('表名')->insert(); 连贯操作/链式操作 例: 在这里插入图片描述 效果: 在这里插入图片描述 在这里插入图片描述


2、修改数据(update) 数据修改可以使用update()、increment()和decrement()方法来实现。

update方法表示可以修改整个记录中的全部字段 increment和decrement表示修改数字字段的数值(递增或者递减),典型的应用:记录登录次数、积分的增加;

where() -> update([]) 注意:where() -> where() -> where()... 这个语法是并且(and)关系语法。 where() -> orWhere() -> orWhere()... 这个语法是或者(or)关系语法。 orWhere方法的参数与where一致。 Where参数顺序: where(字段名, 运算符, 字段值)。例如id=1,则可以写出:where('id', '=', 1),简写成Where('id', '1');【只有=号才可以简写】

例:把id=1的名称,改名为'lisi' (返回值表示受影响的行数): 在这里插入图片描述 效果: 在这里插入图片描述 在这里插入图片描述


例:把id=1的用户年龄字段值加10

DB::table('member') -> where('id', '=', 1) -> increment('age'); 每次+1 DB::table('member') -> where('id', '=', 1) -> increment('age', 5); 每次+5 DB::table('member') -> where('id', '=', 1) -> decrement('age'); 每次-1 DB::table('member') -> where('id', '=', 1) -> decrement('age', 5); 每次-5

3、查询数据(get) (1)取出基本数据 例:获取member表中所有的数据 DB::table('member') -> get(); // 相当于select * from member ; 返回值是一个集合对象, 在这里插入图片描述 效果: 在这里插入图片描述


例:取出id小于3的数据 在这里插入图片描述 效果: 在这里插入图片描述


例:查询id > 2 且年龄 <25数据 原生sql语句:select * from member where id > 2 and age <25; laravel语句: 在这里插入图片描述 效果: 在这里插入图片描述


(2)取出单行数据 DB::table('member') -> where('id', '1') -> first() 返回值是一个对象。 first方法等价于limit 1

注意:first和get的区别,first返回值是一个对象,而get即便其查询出只有1条记录,其也是一个collection结果集 总结场景: 使用first的场景: 使用first的场景:登录验证、详情页面、修改功能等 使用get的场景:列表页面、设计接口等

例: 在这里插入图片描述 效果: 在这里插入图片描述


(3)获取某个具体的值(一个字段) DB::table('member') -> where('id', '1') -> value('name'); 例:查询出id为1的用户的名字(只想要名字) 在这里插入图片描述 效果: 在这里插入图片描述


(4)获取某些字段数据(多个字段)

$users = DB::table('member') -> select('name', 'email') -> get();
$users = DB::table('member') -> select('name as user_name') -> get();
$users = DB::table('member') ->  select(DB::raw('name, age')) -> get(); // 不解析字段,原样使用。

例:获取id>2的记录中的姓名和邮箱字段。 原生sql: select name, email from member where id > 2; 在这里插入图片描述 效果: 在这里插入图片描述


(5)排序操作 DB::table('member') -> orderBy('age', 'desc') -> get(); 语法: orderBy(排序字段, 排序规则)。desc降序,asc升序 例:查询列表,要求按照age字段降序排列。

在这里插入图片描述 效果: 在这里插入图片描述


(6)分页操作 DB::table('member') -> limit(3) -> offset(2) -> get(); limit:表示限制输出的条数(分页中每页显示记录数) offset:从什么地方开始 例: 在这里插入图片描述 效果: 在这里插入图片描述 (7)删除数据(delete) 在删除中,有两种方式:物理删除(本质就是删除)、逻辑删除(本质是修改) 数据删除可以通过delete函数和truncate函数实现。

delete表示删除记录; truncate表示清空整个数据表;

DB::table('member') -> where('id', '1') -> delete();

在这里插入图片描述 效果: 在这里插入图片描述


(8)执行任意是SQl语句

1、执行原生查询语句 DB::select('select 语句')

2、执行原生的插入语句 DB::insert('insert 语句');

3、执行原生修改语句 DB::update('update 语句')

4、执行原生删除语句 DB::delete('delete 语句');

5、执行一个通用语句(没有返回值的语句,例如create table等) DB::statement('语句')

在学习的php的路上,如果你觉得本文对你有所帮助的话,那就请关注点赞评论三连吧,谢谢,你的肯定是我写博的另一个支持。