当前位置:首页 > Laravel > Laravel框架之查询构造器: 新增/更新/删除

Laravel框架之查询构造器: 新增/更新/删除

Laravel框架之查询构造器: 新增/更新/删除

知识点

  1. 新增操作

  2. 更新操作

  3. 删除操作


1.新增操作

  • insert(): 数据以数组形式传入, 返回布尔值

  • insertGetId(): 新增成功后,返回自增ID


2.更新操作

  • update(): 更新字段以数组方式提供,必须基于where()条件更新

  • increment()/decrement(): 自增/自减操作,可以同时设置更新的其它字段值


3.删除操作

  • delete(): 删除是危险操作,必须基于where()条件

  • truncate(): 清空数据表,并重置自增ID


控制器源码: app/Http/Controllers/home/DbController.php

<?php

namespace App\Http\Controllers\home;

use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\DB;

class DbController extends Controller
{
    //查询
    public function select()
    {
        //1. 全部
        $res = DB::table('stu')->get();

        //2. 单条
        $res = DB::table('stu')->first(); // 第一条
        $res = DB::table('stu')->find(2);  // 主键查询

        //3. 字段
        $res = DB::table('stu')->where('id',2)->value('name');  // 字段值
        $res = DB::table('stu')->pluck('salary');  // 列
        $res = DB::table('stu')->pluck('salary','name');  // 自定义键名

        //3. 分块
        $list = [];  // 名单数组
        // 必须先将记录排序后才可以调用chunk()
        $res = DB::table('stu')->orderByDesc('salary')
            ->chunk(2, function ($stus) use (&$list){  // 引用传参到闭包
            foreach($stus as $stu) {
               $list[] = ($stu->salary <= 6000) ? $stu->name : false;
            }
            // 过滤掉名单中值为:false 的元素
            $list = array_filter($list);
        });
//        dump($list);  // 查看工资小于6000的名单

        //4.分页
        // 跳过前2个记录,连续输出2条
        $res = DB::table('stu')->skip(2)->take(2)->get();
        //从偏移量为2开始,输出3条记录
        $res = DB::table('stu')->offset(1)->limit(3)->get();

        //5.条件
        // AND 与查询
        $res = DB::table('stu')->where('age','>',50)->get();
        $res = DB::table('stu')
            ->where('age','>',50)
            ->where('salary','<',6000)
            ->get();
        // 可以将多条件写到数组中
        $res = DB::table('stu')
            ->where([
                ['age', '>', 50],
                ['salary','<', 6000]
            ])
//            ->toSql()  // 查看生成的sql语句
            ->get();

        // OR 或查询
        $res = DB::table('stu')->orWhere('salary','>',5000)
            ->orWhere('age','<', 50)
//            ->toSql();
            ->get();

        // 原生条件: 直接写原生sql语句中的查询字符串
        $res = DB::table('stu')->whereRaw('age < 40 and salary < 8000')->toSql();
        $res = DB::table('stu')->whereRaw('age < 40 and salary < 8000')->get();

        // 区间查询
        $res = DB::table('stu')->whereBetween('salary',[8000, 10000])->get();
        $res = DB::table('stu')->whereIn('id',[1,3,7])->get();


        // 其它
        // 随机取出一条
        $res = DB::table('stu')->inRandomOrder()->first();

        // 设置结果中的字段列表
        $res = DB::table('stu')
//            -> select('name','age','salary')
//            -> select(DB::raw('name, age'))  // 原生字符串
//            -> addSelect('create_time') // 追回一个字段
            -> selectRaw('name,salary,update_time') // 原生快捷语法
            -> first();

        dump($res);
    }

    // 新增操作
    public function insert()
    {
//        $res = DB::table('stu')->insert([
//            'name' => '金轮法王',
//            'age' => 70,
//            'salary' =>9090,
//            'create_time'=> time(),
//            'update_time' => time()
//        ]);

        $res = DB::table('stu')->insertGetId([
            'name' => '霍都',
            'age' => 40,
            'salary' =>9393,
            'create_time'=> time(),
            'update_time' => time()
        ]);

        var_dump($res);

    }

    // 更新
    public function update(Request $request)
    {
        // 获取更新条件: 路由变量中
        $id = $request->route('id');
        $res = DB::table('stu')
            ->where('id',$id)
            ->update(['name'=>'郭靖']);

        dump($res);
    }

    // 删除
    public function delete(Request $request)
    {
        $id = $request->route('id');
        $res = DB::table('stu')
            ->where('id',$id)
            ->delete();

        dump($res);
    }
}

路由: web.php

// 查询构造器
// 查询
Route::get('home/db/select', 'home\DbController@select');

//新增
Route::get('home/db/insert', 'home\DbController@insert');

//更新
Route::get('home/db/update/{id}', 'home\DbController@update');

//删除
Route::get('home/db/delete/{id}', 'home\DbController@delete');

免责声明:部分文章信息来源于网络及网友投稿,本网站只负责文章进行整理、排版、编辑,是出于传递更多信息之目的,并不意味着赞同其观点或证实其内容的真实性,如本网站文章和转稿涉及版权等问题,请作者及时联系本站,我们会尽快处理。烛光驿站欢迎捐赠赞赏

权益
版权所有:© 2018 www.sjzphp.cn
网站备案:冀ICP备17012435号-2
联系邮箱:guotaoi@foxmail.com