zoukankan      html  css  js  c++  java
  • Laravel查询构造器简介

    数据表

    CREATE TABLE IF NOT EXISTS students(
        `id` INT AUTO_INCREMENT PRIMARY KEY,
        `name` VARCHAR(255) NOT NULL DEFAULT '' COMMENT '姓名',
        `age` TINYINT UNSIGNED NOT NULL DEFAULT 0 COMMENT '年龄',
        `sex` TINYINT UNSIGNED NOT NULL DEFAULT 10 COMMENT '性别',
        `created_at` INT NOT NULL DEFAULT 0 COMMENT '新增时间',
        `updated_at` INT NOT NULL DEFAULT 0 COMMENT '修改时间'
    )ENGINE=InnoDB DEFAULT CHARSET=UTF8 AUTO_INCREMENT=1001 COMMENT='学生表';
    

    一、查询构造器简介

    1. Laravel查询构造器(query builder)提供方便、流畅的接口,用来建立及执行数据库查找语法

    2. 使用PDO参数绑定,以保护应用程序免于SQL注入。因此传入的参数不需额外转义特殊字符

    3. 基本可以满足所有的数据库操作,而且在所有支持的数据库系统上都可以执行

    二、使用查询构造器新增数据

    <?php
    /**
     * Created by PhpStorm.
     * User: chuang
     * Date: 17-1-14
     * Time: 下午4:29
     */
    namespace AppHttpControllers;
    use IlluminateSupportFacadesDB;
    class StudentController extends Controller
    {
        //新增数据
        public function insert(){
            //返回一个布尔值
            //table内传入表名
            $bool = DB::table('students')->inster(
                //将参数以数组的形式传入
                [
                    'name'=>'bigz',
                    'age'=>18
                ]
            );
            var_dump($bool);
            //插入并返回id
            $id = DB::table('students')->insertGetId(
                [
                    'name'=>'bigz',
                    'age'=>19
                ]
            );
            var_dump($id);
            //一次插入多条数据
            $bools = DB::table('students')->insert(
                [
                    ['name'=>'bigz','age'=>18],
                    ['name'=>'zbig','age'=>21]
                ]
            );
            var_dump($bools);
        }
    }
    

    三、使用查询构造器更新数据

    <?php
    /**
     * Created by PhpStorm.
     * User: chuang
     * Date: 17-1-14
     * Time: 下午4:29
     */
    namespace AppHttpControllers;
    use IlluminateSupportFacadesDB;
    class StudentController extends Controller
    {
        //更新数据
        /*
         * 更新主要有两方面内容
         * 1、更新指定内容
         * 2、自增和自减
         */
        public function update(){
            //1、更新指定内容
            //返回影响行数
            $num = DB::table('students')
                ->where('name','bigz')//更新条件
                ->update(['age'=>22]);//更新内容
            var_dump($num);
            //2、自增,自减
            //自增,默认值是1,返回影响行数
            $num = DB::table('students')->increment('age');
            var_dump($num);
            //自定义自增数值
            $num = DB::table('students')->increment('age',3);
            var_dump($num);
            //自减,默认值是1, 返回影响行数
            $num = DB::table('students')->decrement('age');
            var_dump($num);
            //带条件的自增与自减
            $num = DB::table('students')
                ->where('name','bigz')
                ->increment('age');
            var_dump($num);
            //自增,自减时同时修改其他字段
            $num = DB::table('students')
                ->where('id',1)
                ->increment('age',['name'=>'BigZ']);
            var_dump($num);
        }
    }
    

    三、使用查询构造器删除数据

    <?php
    /**
     * Created by PhpStorm.
     * User: chuang
     * Date: 17-1-14
     * Time: 下午4:29
     */
    namespace AppHttpControllers;
    use IlluminateSupportFacadesDB;
    class StudentController extends Controller
    {
        //删除数据
        public function delete(){
            //删除全表
            $num = DB::table('students')
            ->delete();
            var_dump($num);
            //删除指定数据
            $num  = DB::table('students')
                ->where('id',1)
                ->delete();
            var_dump($num);
            //删除id大于等于6的数据
            $num = DB::table('students')
                ->where('id','>=',6)
                ->delete();
            var_dump($num);
            //清空数据表,不返回任何数据
            DB::table('students')->turncate();
        }
    }
    

    四、使用查询构造器查询数据

    <?php
    /**
     * Created by PhpStorm.
     * User: chuang
     * Date: 17-1-14
     * Time: 下午4:29
     */
    namespace AppHttpControllers;
    use IlluminateSupportFacadesDB;
    class StudentController extends Controller
    {
        //查询数据
        public function query(){
            //get()获取所有数据
            $students = DB::table('students')->get();
            dd($students);
            //first()获取结果集中的第一条数据
            $student = DB::table('students')->first();
            dd($student);
            $student = DB::table('students')->orderBy('age','desc')->first();
            dd($student);
            //where()
            //返回年龄大于18的所有数据
            $students = DB::table('students')
                ->where('age','>',18)
                ->get();
            dd($student);
            //多条件查询
            $students = DB::table('students')
                ->whereRaw('id >= ? and age > ?',[20, 18])
                ->get();
            dd($students);
            //pluck() 返回结果集中指定的字段
            $names = DB::table('students')
                ->pluck('name');
            dd($names);
            //lists() 返回结果集中指定的字段
            $names = DB::table('students')
                ->lists('name');
            dd($names);
            $names = DB::table('students')
                // 指定id作为数组的key
                ->lists('name','id');
            dd($names);
            //select() 查询指定的字段
            $students = DB::table('students')
                ->select('id','name','age')
                ->get();
            dd($students);
            //chunk() 限制每次查询数据的个数
            DB::table('students')->chunk(1000,function ($students){
                //把每次查询的数据打印出来
               dd($students);
               //想要在指定的条件下停止此语句只需
                return false;
            });
        }
    }
    

    五、查询构造器中的聚合函数

    <?php
    /**
     * Created by PhpStorm.
     * User: chuang
     * Date: 17-1-14
     * Time: 下午4:29
     */
    namespace AppHttpControllers;
    use IlluminateSupportFacadesDB;
    class StudentController extends Controller
    {
       //聚合函数
        public function funcs(){
            //count() 返回数据条数
            $num = DB::table('students')->count();
            var_dump($num);
            //max()
            //返回数据表中最大的年龄数值
            $max = DB::table('students')->max('age');
            var_dump($max);
            //min() 同 max()
            //avg() 用法同 max() 返回平均数
            //sum() 用法同max() 返回总和
        }
    }
    
    
  • 相关阅读:
    文档_word常用设置-操作
    Java NIO总结 整理
    Spring缓存注解@Cacheable、@CacheEvict、@CachePut使用
    Lock和synchronized比较详解
    SpringBoot如何将类中属性与配置文件中的配置进行绑定
    简述MyBatis的一级缓存、二级缓存原理
    服务器端filter解决ajax简单请求跨域访问问题
    Spring Boot异步执行程序
    程序猿和hr面试时的巅峰对决
    数据库三大范式详解(通俗易懂)
  • 原文地址:https://www.cnblogs.com/zheng-chuang/p/6660257.html
Copyright © 2011-2022 走看看