Laravel查詢構造器簡介

數據表php

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、查詢構造器簡介

  1. Laravel查詢構造器(query builder)提供方便、流暢的接口,用來創建及執行數據庫查找語法sql

  2. 使用PDO參數綁定,以保護應用程序免於SQL注入。所以傳入的參數不需額外轉義特殊字符數據庫

  3. 基本能夠知足全部的數據庫操做,並且在全部支持的數據庫系統上均可以執行數組

2、使用查詢構造器新增數據

<?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);
    }
}

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 update(){
        //一、更新指定內容
        //返回影響行數
        $num = DB::table('students')
            ->where('name','bigz')//更新條件
            ->update(['age'=>22]);//更新內容
        var_dump($num);
        //二、自增,自減
        //自增,默認值是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);
    }
}

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 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();
    }
}

4、使用查詢構造器查詢數據

<?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;
        });
    }
}

5、查詢構造器中的聚合函數

<?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() 返回總和
    }
}
相關文章
相關標籤/搜索