zoukankan      html  css  js  c++  java
  • laravel DB操作

    Laravel DB操作

    引用天才在战斗的文章(如有意见可删除)

    基本查询

    select

    检索表中的所有行

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

    从表检索单个行(name = lilei)

    $user = DB::table('users')->where('name', 'lilei')->first();

    检索单个列的行(查询出 name = lilei 的 id)

    $name = DB::table('users')->where('name','lilei')->pluck('id');

    检索一个列值列表(单独查询这一列)

    $roles = DB::table('roles')->lists('title');

    该方法将返回一个数组标题即为 title。你也可以指定一个自定义的键列返回的数组

    $roles = DB::table('roles')->lists('title', 'name');

    指定一个Select子句进行查询

    $users = DB::table('users')->select('name', 'email')->get();
    $users = DB::table('users')->distinct()->get();
    $users = DB::table('users')->select('name as user_name')->get();

    Select子句添加到一个现有的查询 $query = DB::table('users')->select('name');

    $users = $query->addSelect('age')->get();

    where

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

    OR

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

    Where Between

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

    Where Not Between

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

    Where In With An Array

    $users = DB::table('users')->whereIn('id', array(1, 2, 3))->get();
    $users = DB::table('users')->whereNotIn('id', array(1, 2, 3))->get();

    Using Where Null To Find Records With Unset Values

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

    Order By, Group By, And Having

    $users = DB::table('users')->orderBy('name', 'desc')->groupBy('count')->having('count', '>', 100)->get();

    Offset & Limit

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

    Joins 连接

    查询构建器也可以用来编写连接语句。

    Basic Join Statement

    DB::table('users')
     ->join('contacts', 'users.id', '=', 'contacts.user_id')
     ->join('orders', 'users.id', '=', 'orders.user_id')
     ->select('users.id', 'contacts.phone', 'orders.price')
     ->get();

    左连接语句

    DB::table('users')
     ->leftJoin('posts', 'users.id', '=', 'posts.user_id')
     ->get();
    DB::table('users')
     ->join('contacts', function($join) {
       $join->on('users.id', '=', 'contacts.user_id')->orOn(...);
     })
     ->get();
    DB::table('users')
     ->join('contacts', function($join) {
       $join->on('users.id', '=', 'contacts.user_id')
       ->where('contacts.user_id', '>', 5);
     })
     ->get();

    分组

    有时候, 您可能需要创建更高级的where子句, 如“存在”或嵌套参数分组。Laravel query builder可以处理这些:

    DB::table('users')
     ->where('name', '=', 'John')
     ->orWhere(function($query) {
       $query->where('votes', '>', 100)
       ->where('title', '<>', 'Admin');
     })
     ->get();

    上面的查询将产生以下SQL:

    select * from users where name = 'John' or (votes > 100 and title <> 'Admin')
     Exists Statements
     DB::table('users')
     ->whereExists(function($query) {
       $query->select(DB::raw(1))
       ->from('orders')
       ->whereRaw('orders.user_id = users.id');
     })
     ->get();

    上面的查询将产生以下SQL:

    select * from users where name = 'John' or (votes > 100 and title <> 'Admin')
     Exists Statements
     DB::table('users')
     ->whereExists(function($query) {
       $query->select(DB::raw(1))
       ->from('orders')
       ->whereRaw('orders.user_id = users.id');
     })
     ->get();

    聚合

    查询构建器还提供了各种聚合方法,如统计,马克斯,min,avg和总和。

    Using Aggregate Methods

    $users = DB::table('users')->count();
    $price = DB::table('orders')->max('price');
    $price = DB::table('orders')->min('price');
    $price = DB::table('orders')->avg('price');
    $total = DB::table('users')->sum('votes');

    Raw Expressions

    有时您可能需要使用一个原始表达式的查询。这些表达式将注入的查询字符串,所以小心不要创建任何SQL注入点!创建一个原始表达式,可以使用DB:rawmethod:

    Using A Raw Expression

    $users = DB::table('users')
     ->select( DB::raw('count(*) as user_count, status') )
     ->where('status', '<>', 1)
     ->groupBy('status')
     ->get();

    递增或递减一个列的值

    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, array('name' => 'lilei'));
  • 相关阅读:
    flex + bison multiple parsers
    Educational Codeforces Round 95 (Rated for Div. 2)
    python学习笔记 day20 序列化模块(二)
    python学习笔记 day20 常用模块(六)
    python 学习笔记 常用模块(五)
    python学习笔记 day19 常用模块(四)
    python学习笔记 day19 常用模块(三)
    python学习笔记 day19 常用模块(二)
    python学习笔记 day19 作业讲解-使用正则表达式实现计算器
    python学习笔记 day19 常用模块
  • 原文地址:https://www.cnblogs.com/smilevv/p/13845605.html
Copyright © 2011-2022 走看看