Laravel学习笔记基础系列--(二十一)Laravel 查询构建器增删改的使用
作者:温新
时间:2021-06-28
hi,我是温新,一名PHPer
简介
Laravel数据库Query Builder
提供了一套便利的流式接口用于数据库查询/创建操作。Query Builder
可以链式调用。
数据库的查询操作是一件复杂的工作,因此,本文先从简单的增删改
操作开始。
准备工作
定于路由与控制器,用于演示操作。
路由
Route::get('demo/demo', 'DemoController@demo');
控制器
php artisan make:controller DemoController
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
class DemoController extends Controller
{
public function demo()
{
}
}
开始舞动起来
无论是查询还是删除或是修改,都要指定表,那么现在,让我们一起从表开始舞动起来。
table()连接表
方法:table(表名,别名)
public function demo()
{
$result = DB::table('users');
dd($result);
}
先把它打印出来看看,看看它是什么东西。从打印的结果可以看到,它返回的是一个 流式查询构建器实例(Illuminate\Database\Query\Builde),关于这个 流式查询构建器实例 非常有用,这里先不用深究。
了解了对表的查询,那么下面就要开始表演了。
insert()插入数据
方法 :insert(array)
返回值:成功返回true
插入一条数据
$result = DB::table('users')->insert([
'name' => '李四',
'email' => 'lisi@qq.com',
'password' => bcrypt('123456'),
'nickname' => '老四',
]);
dd($result);
插入多条数据
插入多条数据时,传递参数是一个二维数组
$result = DB::table('users')->insert([
[
'name' => '赵三',
'email' => 'zhaosan@qq.com',
'password' => bcrypt('123456'),
'nickname' => '老三',
],
[
'name' => '王五',
'email' => 'wangwu@qq.com',
'password' => bcrypt('123456'),
'nickname' => '老王',
]
]);
dd($result);
插入数据后获取自定ID
方法:insertGetId()
返回值:返回自增住建 ID
$result = DB::table('users')->insertGetId([
'name' => '二麻子',
'email' => 'ermazi@qq.com',
'password' => bcrypt('123456'),
'nickname' => '麻子',
]);
dd($result);
update()更新
update更新
方法:update(array)
返回值:成功返回 1
方法:where()
查询条件
update
方法对数据进行更新,接收字段名和值的键值对数组。
高能注意:更新操作一定要带更新条件,不然所有数据会被更新。
$result = DB::table('users')->where('id',126)->update(['name'=>'六麻子']);
dd($result);
updateOrInsert查询或更新
用法:updateOrInsert(array $attributes, array $values = []))
参数:$attribute
用于查询记录的条件数组;$values
用于更新的键值对数组
返回值:成功返回 true
// 更新操作。六麻子改为了一麻子
$result = DB::table('users')->updateOrInsert(['name'=>'六麻子'],['name'=>'一麻子']);
dd($result);
假设一个场景,目前不知道数据中是否有这条数据,若有则进行更新操作,若没有则进行删除操作。
updateOrInsert
方法首先会使用第一个参数的值去查询数据库记录,若有记录,则使用第二个参数进行更新;若没有记录,则合并这两个数组然后插入记录。
下面使用udateOrInsert
来演示插入操作。
// 新增操作
$result = DB::table('users')->updateOrInsert(['name'=>'李胖子','email'=>'lipangzi@qq.com','password'=>'123456'],['nickname'=>'胖子']);
dd($result);
增加或减少
比较简单加上没有相关字段,就不演示了。勤快的你,可以使用迁移文件新增一个 浏览量 字段进行演示。
假设一个场景,一篇文章的浏览量,不去操作数据库,就可以使用此方法进行增加或减少浏览量。
// 文章浏览量加1
DB::table('posts')->increment('views');
// 文章浏览量加10
DB::table('posts')->increment('views',10);
// 文件浏览量减1
DB::table('posts')->decrement('views');
// 文章浏览量减10
DB::table('posts')->decrement('views',10);
delete删除
用法:delete($id)
返回值:返回受影响条件
高能注意:删除是一件危险的操作,因此一定要带上条件。
// 方式一
$result = DB::table('users')->delete(127);
// 方式二
$result = DB::table('users')->where('id',126)->delete();
// 方式三
$result = DB::table('users')->where('id','>',120)->delete();
聚合统计
对于聚合统计函数,查询构建器也进行了封装,对等SQL聚合统计函数。
count统计总数
返回值:数据总量
$result = DB::table('users')->count();
dd($result);
max最大值
方法:max(字段名)
$result = DB::table('users')->max('id');
min最小值
方法:min(字段名)
$result = DB::table('users')->min('id');
avg平均值
方法:avg(字段名)
$result = DB::table('users')->avg('id');
sum总和
方法:sum(字段名)
$result = DB::table('users')->sum('id');
我是温新
每天进步一点点,就一点点