查询构造器 :使用

未匹配的标注

查询构造器

介绍

这篇文章带大家了解如何使用 DB Facade 来执行数据库查询

在控制器中使用 DB Facade

要在控制器中使用 DB Facade 首先要引入 Illuminate\Support\Facades\DB

// 引入
use Illuminate\Support\Facades\DB;

// 然后就可以使用了
DB::statement('drop table `users`');

或者你也可以直接使用完全限定名称

\DB::statement('drop table `users`');

原生 SQL

这里讲解使用 DB Facade 来执行原生查询

SELECT

原始查询

// 查询 id 为 10 的用户
DB::select('SELECT * FORM `user` where `id` = 10');

参数绑定

// 位置绑定 :查询 id 为 10 的用户
DB::select(
    'SELECT * FORM `user` where `id` = ?', 
    array(10)
);

// 名称绑定 :查询 id 为 10 的用户
DB::select(
    'SELECT * FROM `user` where `id` = :id', 
    array('id' => 10)
);

INSERT

DB::insert(
    'INSERT INTO `user` (`name`, `email`) values(?, ?)',
    ['cangsongbayu', 'cangsongbayu@outlook.com']
);

UPDATE

DB::update(
    'UPDATE `user` SET `email` = ? WHERE `id` = ?',
    ['cangsongbayu@gmail.com', 1]
);

DELETE

DB::delete(
    'DELETE from `user` WHERE `id` = ?',
    [1]
);

返回值

方法 返回值
insert() 返回布尔值
delete() 返回被删除的行数
update() 返回被更新的行数
select() 返回一个数组 ,数组的每一项是 stdClass 对象

异常处理

查询如果发生错误 ,会抛出 \Illuminate\Database\QueryException 异常

try {
    DB::insert('INSERT INTO user (`name`) VALUES ("cangsongbayu")');
} catch (\Illuminate\Database\QueryException $e) {
    // 执行的 SQL 语句
    $e->getSql();
    // SQL 语句绑定的参数
    $e->getBindings();
}

查询构造器

查询构造器可以将多个方法链接起来 ,然后构造一个查询语句 。最后通过一些方法 ,比如 get() 来触发这个查询

// table() 方法指定查询 user 表( from `user` )
DB::table('user')
    // where() 方法指定查询 id 为 1 的用户( where `id` = 1 )
    ->where('id', 1)
    // get() 方法触发上面构造的查询( SELECT * FROM `user` WHERE `id` = 1  )
    ->get();

本文章首发在 LearnKu.com 网站上。

上一篇 下一篇
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 0
发起讨论 只看当前版本


暂无话题~