數據表
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() 返回總和
}
}