## **简介**
Laravel操作数据的方式原生SQL、查询构建器、Eloquent ORM。
Laravel 支持四种类型的数据库系统
* MySQL
* Postgres
* SQLite
* SQL Server
**1.数据库配置**
数据库配置在config/database.php(但是数据库用户及密码等敏感信息位于.env 文件),默认情况下,Laravel 使用 MySQL 作为数据库引擎。
![](https://box.kancloud.cn/9f605fa5ea61300cd31f52a825ba38db_1246x171.png)
**2.运行原生 SQL 查询**
一个普通的查询
```
DB::select('select * from users');
```
增加命名绑定(在查询语句中绑定了id,在第二个参数中传入id,避免了字符串拼接的问题)
```
DB::select('select * from users where id = :id', ['id' => 1]);
```
插入数据(?号表示占位符,用第二个参数进行填充)
```
DB::insert('insert into users (id, name) values (?, ?)', [1, '宋博']);
```
更新数据(返回受影响行数)
```
DB::update('update users set = ?where name = ?', [1, '宋博']);
```
删除数据(返回受影响行数)
```
DB::delete('delete from users where id=?',[1]);
```
注:有些数据库语句不返回任何值,比如新增表,修改表,删除表等,对于这种类型的操作,可以使用 DB 门面的 statement 方法。
```
DB::statement('drop table users');
```
**3.数据库事务**
transaction 方法:使用 transaction 方法时不需要手动回滚或提交:如果事务闭包中抛出异常,事务将会自动回滚,如果闭包执行成功,事务将会自动提交。
```
DB::transaction(function () {
DB::table('users')->update(['votes' => 1]);
DB::table('posts')->delete();
});
```
这样的方法并不能完全的控制事务,我们来手动使用事务。
开启事务
```
DB::beginTransaction();
```
事务回滚
```
DB::rollBack();
```
提交事务
```
DB::commit();
```
我们可以配合try{}catch(){}使用
```
DB::beginTransaction();
try{
//数据处理
DB::commit();
}catch(\Exception $e){
DB::rollBack();
//抛出异常
}
```