一.DB facade
连接数据库操作文件
config/database.php
.env
DB_CONNECTION=mysql DB_HOST=localhost DB_PORT=3306 DB_DATABASE=laravel DB_USERNAME=root DB_PASSWORD=
DB facade 实现增删改查
class StudentController extends Controller { public function test1() { 查询,返回数值 $students = DB::select('select * from student'); dd($students); 新增,返回是否成功 $bool = DB::insert('insert into student(name,age,create_at,update_at) value(?,?,?,?)', ['sean',18,20342341,2341314]); var_dump($bool); 修改,返回修改行数 $num = DB::update('update student set age=? where name=?',[19,'yci']); var_dump($num); 删除,返回修改行数 $num = DB::delete('delete from student where id>?',[1]); var_dump($num); } }
二.查询构造器
1.查询构造器简介
提供接口来建立及执行数据库查找语法。
使用PDO参数绑定,以保护应用程序免于SQL注入,因此传入的参数不需要额外的转义特殊字符
基本满足所有的数据库操作,在所有支持的数据库系统都可以执行。
2.使用查询构造器进行数据的增删改查
//新增数据 public function query1() { //新增数据,返回bool值 $bool = DB::table('student')->insert( [ 'name'=>'imooc', 'age'=>18, 'create_at'=>231230, 'update_at'=>13212] ); var_dump($bool); //在新增数据时得到自增id $id=DB::table('student')->insertGetId( [ 'name'=>'imooc2', 'age'=>18, 'create_at'=>231230, 'update_at'=>132232] ); var_dump($id); //一次新增多条数据,返回bool值 $bool = DB::table('student')->insert([ [ 'name'=>'imooc', 'age'=>18, 'create_at'=>231230, 'update_at'=>13212] , [ 'name'=>'imooc2', 'age'=>18, 'create_at'=>231230, 'update_at'=>132232] ]); var_dump($bool); }
//更新数据 public function query2() { //返回修改行数 $num = DB::table('student') ->where('id',12) ->update(['age'=>20]); var_dump($num); //自增(默认自增1),返回修改行数 $num=DB::table('student')->increment('age'); //自增3 $num=DB::table('student')->increment('age',3); //自减 $num=DB::table('student')->decrement('age',3); var_dump($num); $num=DB::table('student') ->where('id',12) ->increment('age',3,['name'=>'iimooc']); }
//删除数据 public function query3() { //删除数据 $num = DB::table('student') ->where('id','>=',3) ->delete(); var_dump($num); //清空数据表,不返回任何值 DB::table('student')->truncate(); }
//查询数据 public function query4() { //get返回所有数据 $students =DB::table('student')->get(); dd($students); //first获取结果集第一条数据 $student =DB::table('student') ->orderBy('id','desc') ->frist(); dd($student); //where单条件查询 $students =DB::table('student') ->where('id','>=',1) ->get(); dd($students); //where多条件查询 $students=DB::tabel('student') ->whereRaw('id>=? and age>=?',[1,18]) ->get(); dd($students); //pluck返回结果集中指定的字段 $names=DB::table('student') ->pluck('name'); dd($names); //lists返回结果集中指定的字段并可以指定下标,与pluck对比 $names=DB::table('student') ->lists('name','id'); dd($names); //select查询部分信息 $students=DB::table('student') ->select('name','age','create_at'); dd($students); //chunk数据太多,分段查找 echo '<pre>'; DB::table('student')->chunk(50,function($students){ var_dump($students); if(条件){ //当满足条件时,不在获得数据 return false; } }); }
3.查询构造器中的聚合函数
//聚合函数的使用 public function query5() { //count(),max(),min(),avg(),sum(); $num = DB::tabel('student')->count(); var_dump($num); $max=DB::table('student')->max('age'); var_dump($max); }
三.Eloquent ORM
1.ORM简介、模型的建立及查询数据。
ORM是ActiveRecord实现,用来实现数据库操作每个数据表都有一个与之对应的“模型(Model)”用于数据的交互
模型的建立:
<?php /** * Created by PhpStorm. * User: Administrator * Date: 2018/5/25 * Time: 14:18 */ namespace App; use Illuminate\Database\Eloquent\Model; class Student extends Model { //指定表名 protected $table ='student'; //指定主键 protected $primaryKey = 'id'; }查询数据
public function orm1() { //all查询表的所有记录,返回一个集合 $students=Student::all(); dd($students); //find根据主键进行查询 $student = Student::find(1); dd($student); //查询构造器在ORM中的使用 $students = Student::get(); dd($students); $student =Student::where('id','>','1') ->orderBy('age','desc') ->frist(); dd($student); }
2.ORM新增数据、自定义时间戳及批量赋值。
(1)通过模型新增数据(涉及到自定义时间戳)public function orm2() { //使用模型新增数据 //首先得到模型 $student = new Student(); $student->name = 'sean2'; $student->age=48; $bool = $student->save(); dd($bool); }
在模型中设置
//关闭save方法生成的自动时间戳 默认生成 created_at updated_at public $timestamps = false;
(2)使用模型的Create方法新增数据(涉及到批量赋值)
//create新增数据 public function orm3() { //默认不允许批量赋值 Student::create(['name'=>'mooc', 'age'=>18]); }
在模型中设置
//指定允许批量赋值的字段 protected $fillable =['name','age']; //指定不允许批量赋值的字段 protected $guarded =['id'];
3.ORM修改数据、删除数据。
//更新数据 public function orm4() { //通过模型更新数据 $student =Student::find(1); $student->name='kitty'; $bool =$student->save(); var_dump($bool); //结合查询语句批量更新 Student::where('id','>',2)->update(['age'=>41]); }
//删除数据 public function orm5() { //通过模型删除 $student =Student::find(2); $bool=$student->delete(); var_dump($bool); //通过主键删除一个或多个数据 Student::destroy(1); Student::destroy(1,3,5); //删除指定条件的 Student::where('id','>',2)->delete(); }