🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
## **简介** 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(); //抛出异常 } ```