Laravel查询构造器的使用方法整理
1.结果集
1.1从一张表获取所有行,get方法获取所有行
$users = DB::table('users')->get();
获取列的值
foreach ($users as $user) {
echo $user->name;
}
1.2.从一张表中获取一行/一列,first方法获取单行
$user = DB::table('users')->where('name', 'John')->first();
echo $user->name;
1.3.如果想要获取包含单个列值的数组,可以使用lists方法
$titles = DB::table('roles')->lists('title');
foreach ($titles as $title) {
echo $title;
1.4.聚合函数,比如count, max, min, avg, 和 sum,你可以在构造查询之后调用这些方法
$users = DB::table('users')->count();
$price = DB::table('orders')->max('price');
$price = DB::table('orders') ->where('finalized', 1) ->avg('price')
1.5.我们并不总是想要获取数据表的所有列,使用select方法查询指定列
$users = DB::table('users')->select('name', 'email as user_email')->get();
1.6.distinct方法允许你强制查询返回不重复的结果集
$users = DB::table('users')->distinct()->get();
1.7.内连接
$users = DB::table('users')
->join('contacts', 'users.id', '=', 'contacts.user_id')
->join('orders', 'users.id', '=', 'orders.user_id')
->select('users.*', 'contacts.phone', 'orders.price')
->get();
1.8.左连接
$users = DB::table('users')
->leftJoin('posts', 'users.id', '=', 'posts.user_id')
->get();
2.where子句
调用where最基本的方法需要三个参数,第一个参数是列名,第二个参数是一个数据库系统支持的任意操作符,第三个参数是该列要比较的值。
例如,下面是一个验证“votes”列的值是否等于100的查询:
$users = DB::table('users')->where('votes', '=', 100)->get();
为了方便,如果你只是简单比较列值和给定数值是否相等,可以将数值直接作为where方法的第二个参数:
$users = DB::table('users')->where('votes', 100)->get();
其它操作符来编写where子句:
$users = DB::table('users')
->where('votes', '>=', 100)
->get();
$users = DB::table('users')
->where('votes', '<>', 100)
->get();
$users = DB::table('users')
->where('name', 'like', 'T%')
->get();
你可以通过方法链将多个where约束链接到一起,也可以添加or子句到查询,orWhere方法和where方法接收参数一样:
$users = DB::table('users')
->where('votes', '>', 100)
->orWhere('name', 'John')
->get();
whereBetween方法验证列值是否在给定值之间(whereNotBetween方法验证列值不在给定值之间):
$users = DB::table('users')
->whereBetween('votes', [1, 100])
->get();
whereIn方法验证给定列的值是否在给定数组中(whereNotIn方法验证给定列的值不在给定数组中):
$users = DB::table('users')
->whereIn('id', [1, 2, 3])
->get();
whereNull方法验证给定列的值为NULL(whereNotNull方法验证给定列的值不是NULL):
$users = DB::table('users')
->whereNull('updated_at')
->get();
3.orderBy方法
$users = DB::table('users')
->orderBy('name', 'desc')
->get();
4.groupBy和having方法用于对结果集进行分组
$users = DB::table('users')
->groupBy('account_id')
->having('account_id', '>', 100)
->get();
ps:a.WHERE 子句用来筛选 FROM 子句中指定的操作所产生的行。
b.GROUP BY 子句用来分组 WHERE 子句的输出。
c.HAVING 子句用来从分组的结果中筛选行。
5.skipskip/take,想要限定查询返回的结果集的数目,或者在查询中跳过给定数目的结果
$users = DB::table('users')->skip(10)->take(5)->get();
6.insert方法
DB::table('users')
->insert([ ['email' => 'taylor@example.com', 'votes' => 0],
['email' => 'dayle@example.com', 'votes' => 0]
]);
如果数据表有自增ID,使用insertGetId方法来插入记录将会返回ID值:
$id = DB::table('users')
->insertGetId(
['email' => 'john@example.com', 'votes' => 0]
);
7.update方法
DB::table('users')
->where('id', 1)
->update(['votes' => 1]);
查询构建器还提供了方便增减给定列名数值的方法,这两个方法都至少接收一个参数:需要修改的列。第二个参数是可选的,用于控制列值增加/减少的数目。
DB::table('users')->increment('votes');
DB::table('users')->increment('votes', 5);
DB::table('users')->decrement('votes');
DB::table('users')->decrement('votes', 5);
在操作过程中你还可以指定额外的列进行更新:
DB::table('users')->increment('votes', 1, ['name' => 'John']);
8.delete方法
DB::table('users')->delete();
在调用delete方法之前可以通过添加where子句对delete语句进行约束:
DB::table('users')->where('votes', '<', 100)->delete();
如果你希望清除整张表,也就是删除所有列并将自增ID置为0,可以使用truncate方法:
DB::table('users')->truncate();
Laravel查询构造器的使用方法整理的更多相关文章
- Laravel查询构造器简介
数据表 CREATE TABLE IF NOT EXISTS students( `id` INT AUTO_INCREMENT PRIMARY KEY, `name` VARCHAR(255) NO ...
- laravel查询构造器DB还是ORM,这两者有什么区别,各该用在什么场景中
解答一: 我们所有操作都是走的orm,因为操作简单 直观明了 好维护,性能是低一些 但还没有多致命,真有并发需要优化了 用DB也不一定能解决问题.还是要了解orm每个方法的意思,不然你可能一不小心就会 ...
- laravel 查询构造器2
//查询构造器 public function query() { //获取所有的数据 $student = DB::table('student')->get(); var_dump($stu ...
- laravel 查询构造器
//查询构造器public function query(){ $bool = DB::table('student')->insert([ ['name' => '王五', 'age' ...
- laravel查询构造器中别名的问题
Laravel框架对数据库的封装是比较完善的,用起来也比较方便.但之前有一个问题一直困扰着我,就是利用laravel作查询时.如果想给表名或是字段名起别名是比较麻烦的事.但翻阅它的文档不难发现,它提供 ...
- Laravel框架使用查询构造器实现CURD
一.什么是查询构造器? ①Laravel 查询构造器(query Builder)提供方便,流畅的接口,用来建立及执行数据库查找语法 ②使用PDO参数绑定,以保护应用程序免于SQL注入因此传入的参数不 ...
- laravel 使用构造器进行增删改查
使用原生语句进行增删改查 //$list = DB::select('select * from wt_category where id = :id', ['id' => 34]); //$i ...
- Python短小精悍的Orator查询构造器
查询构造器 介绍 这个数据库查询构造器,提供便利的接口可以创建和执行查询操作,可以在大多数数据库中使用. 查询select操作 查询表中所有的数据. users = db.table('users') ...
- [Laravel框架学习二]:Laravel的CURD和查询构造器的CURD,以及聚合函数
public function index() { //return Member::getMember();//这是调用模型的方法 return view('lpc',[ 'age'=>18, ...
随机推荐
- android学习11——Handler,Looper,MessageQueue工作原理
Message是Handler接收和处理的消息对象. 每个线程只能拥有一个Looper.它的loop方法读取MessageQueue中的消息,读到消息之后就把消息交给发送该消息的Handler进行处理 ...
- [转]支持向量机SVM总结
首先,对于支持向量机(SVM)的简单总结: 1. Maximum Margin Classifier 2. Lagrange Duality 3. Support Vector 4. Kernel 5 ...
- 读书笔记 effective c++ Item 21 当你必须返回一个对象的时候,不要尝试返回引用
1. 问题的提出:要求函数返回对象时,可以返回引用么? 一旦程序员理解了按值传递有可能存在效率问题之后(Item 20),许多人都成了十字军战士,决心清除所有隐藏的按值传递所引起的开销.对纯净的按引用 ...
- MongoDB【第二篇】集群搭建
第一步:准备 1.安装包 mongodb-linux-x86_64-rhel70-3.4.2.tgz 2. 架构: 本文为 1-primary.1-secondary.1-arbiter 的 mong ...
- Javascript定时器中的this指向
使用js中的定时器(setInterval,setTimeout),很容易会遇到this指向的问题. 直接上例子: var name = 'my name is window'; var obj = ...
- iOS 用Swipe手势和动画实现循环播放图片
主要想法 添加3个ImageView展示图片,实现图片的无限循环. 使用Swipe手势识别用户向右或向左滑动图片. 使用CATransition给ImageView.layer添加动画,展示图片更换的 ...
- Eclipse通过jdbc连接数据库制作简单登陆界面
一.前言: 做网站开发,要求有多种搭配方式,前台技术可以使用PHP.ASP.JSP.ASP.NET.CGI等任何一种: 需要用到的基础语言用的最多的就是HTML/CSS.JS.JAVA.XML这些了, ...
- css中的那些布局
因为最近心血来潮,就总结了一下css中的几种常见的多列布局. 两列自适应布局 两列自适应布局算是css布局里面最基础的一种布局了,不少网站在使用. 这种布局通常是左侧固定,右边自适应,当然也有反过来的 ...
- WeMall微信商城源码插件大转盘代码详情
WeMall微信商城源码插件大转盘代码是用于商业推广的比较有效的方式,分享了部分比较重要的代码,供技术员学习参考 代码详情地址:http://addon.wemallshop.com/Product/ ...
- Lucene实战之初体验
前言 最早做非结构化数据搜索时用的还是lucene.net,一直说在学习java的同时把lucene这块搞一搞,这拖了2年多了,终于开始搞这块了. 开发环境 idea2016.lucene6.0.jd ...