Bootstrap

06_Laravel数据库DB类的使用

准备操作

student表

这里我提供数据库表,数据自己添加吧…

CREATE TABLE `student` (
  `id` int(11) PRIMARY KEY NOT NULL AUTO_INCREMENT,
  `NAME` varchar(20) DEFAULT NULL,
  `age` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8

INSERT INTO student VALUES(NULL,'小马',55);
INSERT INTO student VALUES(NULL,'小腾',45);
INSERT INTO student VALUES(NULL,'小飞',55);
INSERT INTO student VALUES(NULL,'小炎',20);

在这里插入图片描述

控制器

php artisan make:controller DbController

web.php控制器路由配置
Route::get('db/add','DbController@add');
Route::get('db/del','DbController@del');
Route::get('db/update','DbController@update');
Route::get('db/select','DbController@select');

配置

.env文件中的配置

在这里插入图片描述

config中的database.php配置

我比较偏向于第一种(.env),两种选择其中一个即可。
使用env函数,表示先从env文件里面获取,如果获取成功则使用,如果获取失败,则使用env函数的第二个参数。

在这里插入图片描述

引入门面

查阅app.php后,发现DB门面已经被定义过别名了,所以直接使用别名即可。

获取表实例

DB::table(表名);

插入数据

insert()

insert(数组)
可以同时添加一条或多条,返回值是布尔类型。

public function add() {
	$db = DB::table('student');
	$db -> insert([
		[
			'name'	=>	'小李',
			'age'	=>	23
		],
		[
			'name'	=>	'小L',
			'age'	=>	13
		],
	]);
}

温馨提示:截图中显示了三条,是因为我同时执行完insert()和insertGetId()的结果
在这里插入图片描述

insertGetId()
  • insertGetId(一维数组)
    只能添加一条数据,返回自增的id。
public function add() {
	$db = DB::table('student');
	$db -> insertGetId([
		'name'	=>	'小X',
		'age'	=>	10
	]);
}

温馨提示:截图中显示了三条,是因为我同时执行完insert()和insertGetId()的结果
在这里插入图片描述

修改数据

update()
  • update()
    修改任意字段,返回所受影响的行数
public function update() {
	$db = DB::table('student');
	$db -> update([
		'age'	=>	0
	]);
}

在这里插入图片描述

where
  • where(字段, 运算符, 值)
    如果运算符为“=”,则第二个参数可以不写
  • 如何表示 and ?

    where() -> where() -> where() …

  • 如何表示or ?

    where() -> orWhere() -> orWhere() …

加入条件判断
public function update() {
	$db = DB::table('student');
	$db -> where('id','>','104') -> update([
		'age'	=>	15
	]);
}

在这里插入图片描述

increment()
  • increment(字段[, 递增值])
    某个字段递增,默认值1
public function update() {
	$db = DB::table('student');
	$db -> where('id','=','104') -> increment('age',5);
}

在这里插入图片描述

decrement()
  • decrement(字段[, 递减值])
    某个字段递减,默认值1
public function update() {
	$db = DB::table('student');
	$db -> where('id','=','116') -> decrement('age');
}

在这里插入图片描述

查询数据

get()
  • get()
    查询所有
public function select() {
	echo "<pre>";
	$db = DB::table('student');
	print_r($db -> get());
}

在这里插入图片描述

get() + where()
public function select() {
	$db = DB::table('student');
	// 查询id > 104 或 age = 0 的数据
	$data = $db -> where('id','>','104') -> orWhere('age','=','0') -> get();
	dd($data);
}

在这里插入图片描述

查询单行数据
  • first()
    获取第一条数据
public function select() {
	$db = DB::table('student');
	$data = $db -> first();
	dd($data);
}

在这里插入图片描述

获取某个具体的值
  • value(字段)
    获取这个字段的值
public function select() {
	$db = DB::table('student');
	$data = $db -> where('id','=','116') -> value('age');
	dd($data);
}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BQ6NFAGd-1583895006989)(images)]

获取某些字段数据
  • select(字段1, 字段2…)
    查询这些字段
public function select() {
	$db = DB::table('student');
	$data = $db -> select('age','name') -> get();
	dd($data);
}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lK46QP4X-1583895006990)(images)]

排序操作
  • orderBy(字段,排序规则)
    对字段进行排序
public function select() {
	$db = DB::table('student');
	$data = $db -> orderBy('age','desc') -> get();
	dd($data);
}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rbRZ3YGZ-1583895006992)(images)]

分页操作
  • offset(a)
    偏移量
  • limit(a)
    获取条目
public function select() {
	$db = DB::table('student');
	$data = $db -> offset(0) -> limit(2) -> get();
	dd($data);
}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WD93ePvu-1583895006994)(images)]

删除数据

delete()
  • delete()
    删除一条
public function del() {
	DB::table('student') -> where('id','=','101') -> delete();
}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7OHD4BqG-1583895006996)(images)]

truncate
  • truncate()
    删除整表
public function del() {
	DB::table('student') -> truncate();
}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tc6qRmJp-1583895006997)(images)]

执行任意的SQL语句

因为这些纯粹就是SQL语句,此处就不详细演示了。

执行任意insert、update、delete语句
  • DB::statement(SQL语句)
执行任意select语句
  • DB::select(SQL语句)
;