Laravel5.1 基础查询构造器

原生SQL语句

使用原生sql语句查询请先引入 use Illuminate\Support\Facades\DB;

  • 查询语句
// sql 语句
$sql = 'SELECT * FROM users;';

// 执行成功 返回 array
DB::select( $sql );
  • 插入语句
// sql 语句
$sql = 'INSERT INTO users(`name`,`age`) values(?,?);';

//执行成功 返回 boolean
DB::insert( $sql ,['manarch',18]);
  • 修改语句
// sql 语句
$sql = 'UPDATE users SET `age` = ? WHERE `name` = ?;';

// 返回受影响行数 rows number
DB::update( $sql , [19,'manarch'] );
  • 删除语句
// sql 语句
$sql = 'DELETE FROM users WHERE id = ?;';

// 返回删除行数 rows number
DB::delete( $sql , [1]);

注:建议 sql 语句中的变量请尽量使用 ' ? ' 占位,然后在执行时使用数组的方式替换,有助于防止 sql 注入攻击。


查询构造器

  • 查询语句

插入一条数据:

// 返回 boolean
DB::table('users')->insert(['name'=>'manarch','age'=>18]);

插入一条数据并获取新数据的主键值:

// 返回 新增数据的主键值
DB::table('users')->insertGetId(['name'=>'manarch1','age'=>18]);

插入多条数据:

// 返回 boolean
DB::table('users')->insert([
    ['name'=>'manarch2','age'=>18],
    ['name'=>'manarch3','age'=>18],
]);
  • 修改数据

常规修改操作:

// 返回 受影响行数 rows number
DB::table('users')->where('name','manarch2')->update(['age'=>19]);

给某字段 1 :

// 把 manarch3 的年龄加 1 岁
// 返回 受影响行数 rows number
DB::table('users')->where('name','manarch3')->increment('age');

// 把 manarch3 的年龄加 2 岁,并把名字修改为 manarch4
// 返回 受影响行数 rows number
DB::table('users')->where('name','manarch3')->increment('age',2,['name'=>'manarch4']);

给某字段 1 :

// 把 manarch3 的年龄减 1 岁
// 返回 受影响行数 rows number
DB::table('users')->where('name','manarch3')->decrement('age');

// 把 manarch3 的年龄减 2 岁,并把名字修改为 manarch4
// 返回 受影响行数 rows number
DB::table('users')->where('name','manarch3')->decrement('age',2,['name'=>'manarch4']);
  • 删除数据

常规删除操作:

// 返回 删除的行数 rows number
DB::table('users')->where('name','manarch4')->delete();

清空表:

// 返回 void
DB::table('users')->truncate();
  • 查询数据

获取 所有 数据:

// 返回 array(array,array)
DB::table('users')->get();

获取 一条 数据:

// 返回 object
DB::table('users')->first();

条件 获取数据

// 获取 id 大于2 的所有数据
// 返回 array(array,array)
DB::table('users')->where('id','>',2)->get();

欢迎大家到https://manarch.cn阅读,本文链接

本帖已被设为精华帖!
本帖由 Summer 于 7年前 加精
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 3

个人补充一点:
DB类要使用timestamp,需要在建表时将

$table->timestamp();

更改为

$table->timestamp('created_at')->default(\DB::raw('CURRENT_TIMESTAMP'));
$table->timestamp('updated_at')->default(\DB::raw('CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP'));

如有错误或更好的方法请指正。

另外我都忘记laravel中有insertGetId()这个方法了!汗啊

7年前 评论

@泽 我也是才开始用 laravel 之前一直用 yii

7年前 评论

博客界面和简书挺像的

7年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!