查询构造器 :使用
查询构造器
介绍
这篇文章带大家了解如何使用 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();