## **簡介**
Laravel操作數據的方式原生SQL、查詢構建器、Eloquent ORM。
Laravel 支持四種類型的數據庫系統
* MySQL
* Postgres
* SQLite
* SQL Server
**1.數據庫配置**
數據庫配置在config/database.php(但是數據庫用戶及密碼等敏感信息位于.env 文件),默認情況下,Laravel 使用 MySQL 作為數據庫引擎。

**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();
//拋出異常
}
```