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 App\Http\Controllers;
use Illuminate\Support\Facades\DB;
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 App\Http\Controllers;
use Illuminate\Support\Facades\DB;
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 App\Http\Controllers;
use Illuminate\Support\Facades\DB;
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 App\Http\Controllers;
use Illuminate\Support\Facades\DB;
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 App\Http\Controllers;
use Illuminate\Support\Facades\DB;
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() 返回总和
    }
}

posted @ 2017-04-02 23:31  郑闯  阅读(2662)  评论(0编辑  收藏  举报