Laravel学习笔记基础系列--(二十一)Laravel 查询构建器增删改的使用

作者: 温新

分类: 【Laravel】

阅读: 1983

时间: 2021-07-21 14:52:13

作者:温新

时间: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');

我是温新

每天进步一点点,就一点点

请登录后再评论