1.结果集

1.1从一张表获取所有行,get方法获取所有行

  1. $users = DB::table('users')->get();

获取列的值

  1. foreach ($users as $user) {
    echo $user->name;
    }

1.2.从一张表中获取一行/一列,first方法获取单行

  1. $user = DB::table('users')->where('name', 'John')->first();
    echo $user->name;

1.3.如果想要获取包含单个列值的数组,可以使用lists方法

  1. $titles = DB::table('roles')->lists('title');
    foreach ($titles as $title) {
    echo $title;

1.4.聚合函数,比如count, max, min, avg, 和 sum,你可以在构造查询之后调用这些方法

  1. $users = DB::table('users')->count();
    $price = DB::table('orders')->max('price');
    $price = DB::table('orders') ->where('finalized', 1) ->avg('price')

1.5.我们并不总是想要获取数据表的所有列,使用select方法查询指定列

  1. $users = DB::table('users')->select('name', 'email as user_email')->get();

1.6.distinct方法允许你强制查询返回不重复的结果集

  1. $users = DB::table('users')->distinct()->get();

1.7.内连接

  1. $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.左连接

  1. $users = DB::table('users')
    ->leftJoin('posts', 'users.id', '=', 'posts.user_id')
    ->get();

2.where子句

调用where最基本的方法需要三个参数,第一个参数是列名,第二个参数是一个数据库系统支持的任意操作符,第三个参数是该列要比较的值。

例如,下面是一个验证“votes”列的值是否等于100的查询:

  1. $users = DB::table('users')->where('votes', '=', 100)->get();

为了方便,如果你只是简单比较列值和给定数值是否相等,可以将数值直接作为where方法的第二个参数:

  1. $users = DB::table('users')->where('votes', 100)->get();

其它操作符来编写where子句:

  1. $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方法接收参数一样:

  1. $users = DB::table('users')
  2. ->where('votes', '>', 100)
  3. ->orWhere('name', 'John')
  4. ->get();

whereBetween方法验证列值是否在给定值之间(whereNotBetween方法验证列值不在给定值之间):

  1. $users = DB::table('users')
    ->whereBetween('votes', [1, 100])
    ->get();

whereIn方法验证给定列的值是否在给定数组中(whereNotIn方法验证给定列的值不在给定数组中):

  1. $users = DB::table('users')
    ->whereIn('id', [1, 2, 3])
    ->get();

whereNull方法验证给定列的值为NULL(whereNotNull方法验证给定列的值不是NULL):

  1. $users = DB::table('users')
    ->whereNull('updated_at')
    ->get();

3.orderBy方法

  1. $users = DB::table('users')
    ->orderBy('name', 'desc')
    ->get();

4.groupBy和having方法用于对结果集进行分组

  1. $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,想要限定查询返回的结果集的数目,或者在查询中跳过给定数目的结果

  1. $users = DB::table('users')->skip(10)->take(5)->get();

6.insert方法

  1. DB::table('users')
    ->insert([ ['email' => 'taylor@example.com', 'votes' => 0],
    ['email' => 'dayle@example.com', 'votes' => 0]
    ]);

如果数据表有自增ID,使用insertGetId方法来插入记录将会返回ID值:

  1. $id = DB::table('users')
    ->insertGetId(
    ['email' => 'john@example.com', 'votes' => 0]
    );

7.update方法

  1. DB::table('users')
    ->where('id', 1)
    ->update(['votes' => 1]);

查询构建器还提供了方便增减给定列名数值的方法,这两个方法都至少接收一个参数:需要修改的列。第二个参数是可选的,用于控制列值增加/减少的数目。

  1. DB::table('users')->increment('votes');
    DB::table('users')->increment('votes', 5);
    DB::table('users')->decrement('votes');
    DB::table('users')->decrement('votes', 5);

在操作过程中你还可以指定额外的列进行更新:

  1. DB::table('users')->increment('votes', 1, ['name' => 'John']);

8.delete方法

  1. DB::table('users')->delete();

在调用delete方法之前可以通过添加where子句对delete语句进行约束:

  1. DB::table('users')->where('votes', '<', 100)->delete();

如果你希望清除整张表,也就是删除所有列并将自增ID置为0,可以使用truncate方法:

  1. DB::table('users')->truncate();

Laravel查询构造器的使用方法整理的更多相关文章

  1. Laravel查询构造器简介

    数据表 CREATE TABLE IF NOT EXISTS students( `id` INT AUTO_INCREMENT PRIMARY KEY, `name` VARCHAR(255) NO ...

  2. laravel查询构造器DB还是ORM,这两者有什么区别,各该用在什么场景中

    解答一: 我们所有操作都是走的orm,因为操作简单 直观明了 好维护,性能是低一些 但还没有多致命,真有并发需要优化了 用DB也不一定能解决问题.还是要了解orm每个方法的意思,不然你可能一不小心就会 ...

  3. laravel 查询构造器2

    //查询构造器 public function query() { //获取所有的数据 $student = DB::table('student')->get(); var_dump($stu ...

  4. laravel 查询构造器

    //查询构造器public function query(){ $bool = DB::table('student')->insert([ ['name' => '王五', 'age' ...

  5. laravel查询构造器中别名的问题

    Laravel框架对数据库的封装是比较完善的,用起来也比较方便.但之前有一个问题一直困扰着我,就是利用laravel作查询时.如果想给表名或是字段名起别名是比较麻烦的事.但翻阅它的文档不难发现,它提供 ...

  6. Laravel框架使用查询构造器实现CURD

    一.什么是查询构造器? ①Laravel 查询构造器(query Builder)提供方便,流畅的接口,用来建立及执行数据库查找语法 ②使用PDO参数绑定,以保护应用程序免于SQL注入因此传入的参数不 ...

  7. laravel 使用构造器进行增删改查

    使用原生语句进行增删改查 //$list = DB::select('select * from wt_category where id = :id', ['id' => 34]); //$i ...

  8. Python短小精悍的Orator查询构造器

    查询构造器 介绍 这个数据库查询构造器,提供便利的接口可以创建和执行查询操作,可以在大多数数据库中使用. 查询select操作 查询表中所有的数据. users = db.table('users') ...

  9. [Laravel框架学习二]:Laravel的CURD和查询构造器的CURD,以及聚合函数

    public function index() { //return Member::getMember();//这是调用模型的方法 return view('lpc',[ 'age'=>18, ...

随机推荐

  1. FZU 1889 龟兔赛跑

    Problem 1889 龟兔赛跑 Accept: 1240    Submit: 1650Time Limit: 1000 mSec    Memory Limit : 32768 KB Probl ...

  2. Two analytical 2d line intersection in OpenCASCADE

    Two analytical 2d line intersection in OpenCASCADE eryar@163.com Abstract. OpenCASCADE geometric too ...

  3. angular.js之作用域scope'@','=','&'

    <!doctype html> <html ng-app='myApp'> <head> </head> <body> <script ...

  4. angular : ui-router 操作原理

    <body> <a ui-sref="title">title<a> </body> ui-router 会去解析body里的ui- ...

  5. yum的用法

    yum check-update 检查可更新的所有软件包 yum update 下载更新系统已安装的所有软件包 yum upgrade 大规模的版本升级,与yum update不同的是,连旧的淘汰的包 ...

  6. apicloud下拉刷新

    //下拉 apiready = function () { var param = {}; toDoRequest(); param.loadingImgae = 'widget://image/re ...

  7. (八)javaScript对象简介

            脚本对象(JavaScript对象) <script type="text/javascript"> var time=new Date(); time ...

  8. 关于label和input对齐的那些事

    input文本和label对齐 默认状态下,也就是下面这样, 文字和input是居中的. <div> <label>我是中国人</label> <input ...

  9. 每天一个Linux命令 9

    Linux常用命令: 压缩命令:gzip 解压命令:gunzip 压缩命令:zip  解压命令:unzip 压缩命令:bzip2  解压命令:bunzip2 压缩打包命令:tar 1.命令名称:gzi ...

  10. 深入理解ajax系列第四篇——FormData

    前面的话 现代Web应用中频繁使用的一项功能就是表单数据的序列化,XMLHttpRequest 2级为此定义了FormData类型.FormData为序列化表单以及创建与表单格式相同的数据提供了便利. ...