国庆这几天都在外面浪,马上要上班了,该收心了,趁今天有些空闲的时间,静下心总结下Laravel操作数据库的三种方式,以作资料和参考:(三种方式:DB façade 、 查询构造器、 Eloquent ORM )

目录

一、使用DB façade(原始查找)操作数据库

二、使用查询构造器操作数据库(核心)(重要)

三、Eloquent ORM操作数据库


详细目录结构:

一、使用DB façade(原始查找)操作数据库

(1)基本的数据库操作路由配置

(2)数据库façade操作模型StudentController建立

二、使用查询构造器操作数据库(核心)(重要)

(1)新增数据

2-1-1. 新增数据返回布尔值

2-1-2. 新增数据返回ID

2-1-3. 新增多条数据

(2)修改数据

2-2-1. *常用修改数据方式

2-2-2. 自增自减修改数据方式

(3)修改数据

(4)查询数据(first()、where()、pluck()、select()、chunk())

(5)内置的聚合函数

三、Eloquent ORM操作数据库

(1)Eloquent ORM模型的建立及查询数据

(2)Eloquent ORM中新增数据、自定义时间戳、批量赋值

(3)Eloquent ORM修改数据

(4)Eloquent ORM 删除数据

一、使用DB façade(原始查找)操作数据库

(1)基本的数据库操作路由配置:

//新增数据
Route::get('student/add/{name?}/{age?}',['uses' => 'StudentController@addStudentInfo'])->where(['name' => '^[\x{4e00}-\x{9fa5}_a-zA-Z0-9]+$','age' => '\d+']);//修改数据
Route::get('student/update/{id?}/{name?}',['uses' => 'StudentController@updateStudentInfo'])->where(['id' => '\d+','name' => '^[\x{4e00}-\x{9fa5}_a-zA-Z0-9]+$']);//删除数据
Route::get('student/delete/{id}',['uses' => 'StudentController@deleteStudentInfo'])->where(['id'=>'\d+']);//查询数据
Route::get('student/find',['uses' => 'StudentController@findStudentInfo']);

(2)数据库façade操作模型StudentController建立(app\Http\Controllers\StudentController.php)

namespace App\Http\Controllers;
use Illuminate\Routing\Controller as BaseController;
use Illuminate\Support\Facades\DB;class StudentController extends Controller
{   /*** [新增数据]* @param  string  $name [新增姓名]* @param  integer $age  [新增年龄]* @return [Boolean]     [新增情况]*/public function addStudentInfo($name = '我的女神',$age = 16){$insertBoolean = DB::insert('insert into student(name, age) values(?, ?)',[$name,$age]);return var_dump($insertBoolean); //bool(true)}/*** [修改数据]* @param  integer $id   [要修改的ID]* @param  string  $name [要修改成的姓名]* @return [int]         [修改的行数]*/public function updateStudentInfo($id = 1002,$name = '放牛娃的春天'){$updateRows = DB::update('update student set name = ? where id = ?',[$name,$id]);return var_dump($updateRows); //int(1)}/*** [删除数据]* @param  [type] $id [要删除行的ID]* @return [int]      [删除的行数]*/public function deleteStudentInfo($id){$deleteRows = DB::delete('delete from student where id = ?',[$id]);return $deleteRows; //int(1)}/*** [查询数据]* @return [array] [查询数据的数组集合]*/public function findStudentInfo(){$doc = DB::select('select * from student');return dd($doc); //调试模式dd()}
}

二、使用查询构造器操作数据库(核心)(重要)

简介:Laravel查询构造器(query builder)提供方便、流畅的接口,用来建立及执行数据库查找语法;其使用PDO参数绑定,以保护应用程序免于SQL注入因此传入的参数不需额外转义特殊字符(详细了解PDO参数绑定,请参考:https://www.jianshu.com/p/f432fee5d901  )

(1)新增数据

1-1.新增数据返回布尔值

/*** [使用查询构造器新增数据]* @param  string  $name [新增的姓名]* @param  integer $age  [新增的年龄]* @return [boolean]     [新增是否成功]*/
public function queryAdd($name = '王小二的女朋友',$age = 23){$addBool = DB::table('student')->insertGetId(['name' => $name,'age' => $age]);return var_dump($addBool); //int(1009)
}

1-2.新增数据返回ID

/*** [使用查询构造器新增数据]* @param  string  $name [新增的姓名]* @param  integer $age  [新增的年龄]* @return [int]     [新增的ID]*/
public function queryAdd($name = '王小二的女朋友',$age = 23){$addId = DB::table('student')->insertGetId(['name' => $name,'age' => $age]);return var_dump($addId); //int(1009)
}

1-3.新增多条数据

/*** [使用查询构造器新增多条数据]* @return [boolean]     [新增是否成功]*/
public function queryAddMore(){$addBool = DB::table('student')->insert([['name' => '赵云', 'age' => 32],['name' => '张飞', 'age' => 35],['name' => '周瑜', 'age' => 28],['name' => '黄盖', 'age' => 36]]);return var_dump($addBool); // bool(true)
}

(2)修改数据

2-1. *常用修改数据方式:

/*** [使用查询构造器更新数据]* @param  integer $id   [要更新的ID]* @param  string  $name [要更新的姓名]* @return [int]        [更新的行数]*/
public function queryUpdate($id = 1007,$name = '放牧的星星'){$updateRows = DB::table('student')->where('id', $id)->update(['name' => $name]);return var_dump($updateRows); //int(1)
}

2-2. 自增自减修改数据方式:

(3)删除数据

/*** [使用查询构造器删除数据]* @param  [int] $id [要删除项的ID]* @return [int]     [删除的行数]*/
public function queryDelete($id){$deleteRows = DB::table('student')->where(['id' => $id])->delete();// 删除总表 ( 不建议使用 )// DB::table('student')->truncate(); return var_dump($deleteRows); // int(1)
}

(4)查询数据( get()、 first() 、 where() 、 pluck() 、 lists()[新版本已弃用] 、 select() 、 chunk() )

/*** [查询构造器查询数据]*/
public function queryFind(){//1. first方法使用,查找制定顺序的第一个(默认升序asc)/*$doc = DB::table('student')->orderBy('id','asc')->first();print_r($doc); 打印:stdClass Object ( [id] => 1003 [name] => 大黄蜂 [age] => 18 [sex] => 10 [created_at] => 0 [updated_at] => 0 )*///2. where使用 ( 查询ID小于1005的所有数据 )/*2-1. $doc = DB::table('student')->where('id','<',1005)->get();         2-2. $doc = DB::table('student')->whereRaw('id > ? and age < ?',[1001,20])->get();*///3. pluck方法使用 ( 返回对应字段的列的数组 )/* $doc = DB::table('student')->where('age','>=',30)->pluck('name','id');print_r($doc); //打印: Illuminate\Support\Collection Object ( [items:protected] => Array ( [0] => 赵云 [1] => 张飞 [2] => 黄盖 ) )*///4. lists方法的使用 ( 返回对应字段的key-value数组,类似于上面的pluck方法 ) [注意新版本Laravel已经弃用该lists方法]// $doc = DB::table('student')->where('age','>=',30)->lists('name','id');//5. select方法的使用 (返回对应字段的数据列表)/*$doc = DB::table('student')->where('id','<=','1004')->select('name','age','id')->get();print_r($doc); //打印: Illuminate\Support\Collection Object ( [items:protected] => Array ( [0] => stdClass Object ( [name] => 大黄蜂 [age] => 18 [id] => 1003 ) [1] => stdClass Object ( [name] => 我的女神 [age] => 16 [id] => 1004 ) ) )*/// 6. chunk方法的使用 ( 分段查询 )/*DB::table('student')->orderBy('id','desc')->chunk(2,function($result){dd($result);});*///dd($doc);//return var_dump($doc);
}

(5)内置的聚合函数

常用:count()、max()、min()、avg()、sum()

 /*** [查询构造器聚合函数]*/
public function queryFunc(){$count = DB::table('student')->count();echo $count; // 11$max = DB::table('student')->max('age');echo $max; //36$avg = DB::table('student')->avg('age');echo $avg; //21.0909$sum = DB::table('student')->sum('age');echo $sum; //232
}

三、Eloquent ORM操作数据库

概述:

1.Eloquent ORM模型的建立及查询数据

/*** [ORM操作数据库查询数据]* @return [type] [数据集合]*/
public function eloquentORM(){//1. 查询所有数据$results1 = Student::all();$results1 = Student::get();//2. 根据主键查找其中某条数据$results2 = Student::find(1001);//3. 根据主键查找/如果没查到报错$results3 = Student::findOrFail(1007);//4. 带条件查询$results4 = Student::where('id','>',1008)->orderBy('age','desc')->get();//5. 分段查询Student::chunk(2,function($results5){});//6. 聚合函数使用$count = Student::sum('age');}

2.Eloquent ORM中新增数据、自定义时间戳、批量赋值

/*** [使用ORM新增数据]* @return [object] [新增的数据项]*/
public function eloquentORMAdd(){/* $student = new Student();$student->name = '叮咚叮咚的小溪';$student->age = 12;$s = $student->save();dd($student);*///2. 使用模型的Create方法新增数据 ( 报错:需要在Student模型中添加:protected $fillable = ['name','age']; )/*$result = Student::create(['name' => '两只吵架的小英短','age' => 1]);dd($result);*/// 3. firstOrCreate() 查询,无则新增,返回新的实例对象/*$result = Student::firstOrCreate(['name' => '张飞']);dd($result);*/// 4. firstOrNew() 查询,无则新增,新增需要save,返回新的实例/*$result = Student::firstOrNew(['name' => '共烧茄子拌豆腐','age' => 12]);$result -> save();dd($result);*/
}

3.Eloquent ORM修改数据

/*** [使用ORM更新数据]*/
public function eloquentORMUpdate(){//1. 通过模型更新/*$student = Student::find(1017);$student->name = '红色小短裙的胖胖猪';$student->age = 8;$bool = $student->save();dd($bool);*/ //true //报错: Call to a member function format() on string 解决:Student模型中关闭方法asDateTime//2. 通过结合查询语句 批量更新$rowNum = Student::where('id','>',1022)->update(['age' => 32]);var_dump($rowNum); //int(1)
}

4.Eloquent ORM 删除数据

/*** [eloquentORMDelete description]* @return [type] [description]*/
public function eloquentORMDelete(){//1. 通过模型删除/* $student = Student::find(1016);$bool = $student->delete();var_dump($bool); //bool(true)*///2. 通过主键值删除/*$numRow = Student::destroy(1022, 1018);var_dump($numRow); //int(1)*///3. 通过指定条件删除/* $numRow = Student::where('id','>',1013)->delete();var_dump($numRow); //int(7)*/}

~~  致自己:不要失去信心,只要坚持不懈,就终会有成果的!

Laravel操作数据库的三种方式总结归纳相关推荐

  1. Qt操作SQLite数据库的三种方式

    Qt访问Sqlite数据库的三种方式(即使用三种类库去访问),分别为QSqlQuery.QSqlQueryModel.QSqlTableModel,对于这三种类库,可看为一个比一个上层,也就是封装的更 ...

  2. php连接mysql_PHP连接MySQL数据库的三种方式

    本篇文章给大家介绍一下PHP连接MySQL数据库的三种方式(mysql.mysqli.pdo),结合实例形式分析了PHP基于mysql.mysqli.pdo三种方式连接MySQL数据库的相关操作技巧与 ...

  3. php连接虚拟机中mysql数据库吗,PHP连接MySQL数据库的三种方式

    本篇文章给大家介绍一下PHP连接MysqL数据库的三种方式(MysqL.MysqLi.pdo),结合实例形式分析了PHP基于MysqL.MysqLi.pdo三种方式连接MysqL数据库的相关操作技巧与 ...

  4. php 复制mysql数据库_PHP连接MySQL数据库的三种方式

    本篇文章给大家介绍一下PHP连接MySQL数据库的三种方式(mysql.mysqli.pdo),结合实例形式分析了PHP基于mysql.mysqli.pdo三种方式连接MySQL数据库的相关操作技巧与 ...

  5. .net mysql和php mysql数据库连接_浅谈PHP连接MySQL数据库的三种方式

    本篇文章给大家介绍一下PHP连接MySQL数据库的三种方式(mysql.mysqli.pdo),结合实例形式分析了PHP基于mysql.mysqli.pdo三种方式连接MySQL数据库的相关操作技巧与 ...

  6. QT读写Sqlite数据库的三种方式

    QT对一些基本的数据库的访问封装,可谓是极大的方便的我们开发人员,现在我们就来说下QT对Sqlite这个数据库的读写,Sqlite是一个比较小型的本地数据库,对于保存一些软件配置参数或量不是很大的数据 ...

  7. 【玩转SQLite系列】(二)SQLite创建和打开数据库的三种方式

    转载请注明出处:http://blog.csdn.net/linglongxin24/article/details/53234396 本文出自[DylanAndroid的博客] [玩转SQLite系 ...

  8. 【推荐收藏 】Python写入MySQL数据库的三种方式,最后一种方式方便又高效

    大家好,Python 读取数据自动写入 MySQL 数据库,这个需求在工作中是非常普遍的,主要涉及到 python 操作数据库,读写更新等,数据库可能是 mongodb. es,他们的处理思路都是相似 ...

  9. java连接access数据库的三种方式以及远程连接

    连接access数据库,网上的内容很多,尝试的过程中也会遇到各种问题,没有特别好的介绍,所以自己想总结一下,日后备用. 这里需要提前说明下,win7系统32bit和64bit默认安装的access都是 ...

  10. 用python操作浏览器的三种方式,详细介绍并附代码

    第一种:selenium导入浏览器驱动,用get方法打开浏览器,例如: import time from selenium import webdriver def mac():     driver ...

最新文章

  1. latex使用小记录
  2. LeetCode 113. 路径总和 II(回溯)
  3. Puma单栏博客Typecho主题
  4. dj鲜生-用户中心-个人信息
  5. QT 格式化字符串功能
  6. AsyncTask使用须知
  7. C# 文件上传 默认最大为4M的解决方法
  8. python的pyqt5教程_python PyQt5初级教程hello world
  9. [转]二阶巴特沃斯(Butterworth)滤波器
  10. Python按页拆分Word文档
  11. 读书 | 巴比伦最富有的人(内含思维导图)
  12. PDF带目录导出java_itextpdf为pdf文件添加目录(可跳转)
  13. 数据报表开发技巧:自动为数据报表添加【小计】、【总计】行
  14. android面试宝典!Android高级工程师面试实战,通用流行框架大全
  15. 别让拖延毁掉你自己 | 《拖延心理学》全书解读
  16. 电子书下载:Adobe PDF 文档格式开发参考 PDF Reference 1.7
  17. #Windows server 2019将辅助域控升级为主域控
  18. python中的美元符号_类似美元$这个符号pyCharm2.0里怎么输入不好用呢,美元pycharm2.0,如题,键盘没任何问题,就...
  19. 获取wxapkg文件_微信小程序编译包的获取与解压——在手机中获取小程序编译包wxapkg...
  20. android 中限制 eidttext输入emjoy表情

热门文章

  1. OpenCV黑魔法之隐身衣 | 附源码
  2. win10关闭自动更新
  3. Google微软IBM能打败亚马逊AWS的理由很丰满,进展却骨感
  4. chromeOS运行Steam Alpha版
  5. 46-动态编程语言(python)大作业-记忆翻牌游戏
  6. python批量爬取京东手机评论信息及星级
  7. 【翻译】CRAFT:Character Region Awareness for Text Detection
  8. jQuery漂浮横幅图片广告代码
  9. 学生计算机可以打游戏吗,关于在校学生玩电脑游戏的调查报告
  10. Activity透明主题导致behind Activity重绘的解决方法