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

1修改.env文件

  1. 根目录下的.env文件主要是为本地数据库的配置信息 <br />![image.png](https://cdn.nlark.com/yuque/0/2022/png/26109333/1646133177496-30575390-a103-45c4-a38f-9383d1c90711.png#clientId=u46b5e369-5d8d-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=306&id=u5adc2787&margin=%5Bobject%20Object%5D&name=image.png&originHeight=306&originWidth=367&originalType=binary&ratio=1&rotation=0&showTitle=false&size=22601&status=done&style=none&taskId=u38b986d5-d42a-4d4d-93a2-9d9095752b4&title=&width=367)

2. 修改config目录下database.php文件

  1. 使用env函数,表示先从env文件里面获取,如果获取成功则使用,如果获取失败,则使用env函数的第 二个参数。 <br />![image.png](https://cdn.nlark.com/yuque/0/2022/png/26109333/1646133279379-67ee91c0-8c33-4ff2-bdb6-df85dce9e910.png#clientId=u46b5e369-5d8d-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=281&id=u0df91137&margin=%5Bobject%20Object%5D&name=image.png&originHeight=281&originWidth=524&originalType=binary&ratio=1&rotation=0&showTitle=false&size=74257&status=done&style=none&taskId=u9277398d-6f76-4e3f-a425-596ed222aaf&title=&width=524)<br />** (3)在Test控制器中引入DB类; **
  1. use Illuminate\Support\Facades\DB;

1,增加

  1. 对数据库中的某个表增加数据主要有两个函数可以实现,分别是**insert()**和**insertGetId()** insert(数组)可以同时添加一条或多条,返回值是布尔类型。 insertGetId(一维数组),只能添加一条数据,返回自增的id 说明:数组里的元素要求是键值对的关系,键就是数据表中的字段名。 语法:DB::table('表名') -> insert()/insertGetId(); 连贯操作/链式操作 <br />![image.png](https://cdn.nlark.com/yuque/0/2022/png/26109333/1646133546072-6aaaf25e-42c2-498f-99a0-fb4312efe8c4.png#clientId=u46b5e369-5d8d-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=380&id=u823f7e34&margin=%5Bobject%20Object%5D&name=image.png&originHeight=380&originWidth=1185&originalType=binary&ratio=1&rotation=0&showTitle=false&size=55938&status=done&style=none&taskId=ubeeefb4a-f22d-4aac-882e-ff6babd36d2&title=&width=1185)

2.修改数据

数据修改可以使用 update()、increment()和decrement()方法来实现。 ①Update方法表示可以修改整个记录中的全部字段; ②Increment和decrement表示修改数字字段的数值(递增或者递减),典型的应用:记录登录次数、积 分的增加;
image.png
返回值,表示受到影响的行数:
注意:where方法之后可以继续调用where之类的方法。
-> where() -> where() -> where().. 这个语法是并且(and)关系语法。
-> where() -> orWhere() -> orWhere()… 这个语法是或者(or)关系语法。
Orwhere方法的参数与where一致。
Where参数顺序: -> where(字段名,运算符,字段值)。例如id=1,则可以写成:where(‘id’,’=’,1),简写成 Where(‘id’,1);【只有=号可以简写。】
扩展: -> where([‘id’ => 1]);
注意:where与update方法的顺序是不能颠倒的,update必须在最后。
自增,自减 increment()和decrement()
DB::table(‘ member’)->increment(‘age’); 每次+1
DB::table(‘ member’)->increment(‘age’, 5); 每次+5
DB::table(‘ member’)->decrement(‘age’); 每次-1
DB::table(‘ member’)->decrement(‘age’, 5); 每次-5

3.删除数据

在删除中,有两种方式:物理删除(本质就是删除)、逻辑删除(本质是修改)
数据删除可以通过delete函数和truncate函数实现, delete表示删除记录; truncate表示清空整个数据表; DB::table(‘table_name’)->where(‘id’,’1’)->delete(); 清空表数据 trucate 语法:
image.png

4.查询

(1)取出基本数据

案例1:获取member表中所有的数据
image.png
返回值是一个集合对象,
image.png

(2)取出单行数据

DB::table(‘goods’)->where(‘id’,’1’)->first();//返回值是一个对象 first方法等价于limit 1
image.png
注意:first与get的区别,first返回值是一个对象,而get即便其查询出只有1条记录,其也是一个 collection结果集
image.png
总结场景: 使用first的场景:登录验证、详情页面、修改功能等
使用get的场景:列表页面、设计接口

(3)获取某个具体的值(一个字段)

image.png

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

$goods= DB::table(‘goods’)->select(‘id’, ‘goods_name’)->get(); count(*)
$goods = DB::table(‘goods’)->select(‘goods_name user_name’)->get();
$db -> select(DB::raw(‘name,age’)) -> get(); // 不解析字段,原样使用 案例:获取id>2的记录中的姓名和邮箱字段sql:select id,goods_name,goods_price from goods where id > 2;
image.png
image.png

(5)排序操作

image.png

(6)分页操作

image.png

6、执行任意的SQL语句(补充了解)

image.png
image.png