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='学生表';
一、查询构造器简介
-
Laravel查询构造器(query builder)提供方便、流畅的接口,用来建立及执行数据库查找语法
-
使用PDO参数绑定,以保护应用程序免于SQL注入。因此传入的参数不需额外转义特殊字符
-
基本可以满足所有的数据库操作,而且在所有支持的数据库系统上都可以执行
二、使用查询构造器新增数据
<?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() 返回总和
}
}