一切福田,不離方寸,從心而覓,感無不通。

Laravel 数据库实例教程 —— 使用DB门面操作数据库

Laravel支持多种数据库,包括MySQL、Postgres、SQLite和SQL Server,在Laravel中连接数据库和查询数据库都非常简单,我们可以使用多种方式与数据库进行交互,包括原生SQL语句、查询构建器以及Eloquent ORM。本节我们先演示如何使用原生SQL在Laravel应用中对数据库进行增删改查。

1、连接数据库

Laravel中数据库配置文件为config/database.php,打开该文件,默认内容如下:

如果要修改数据库配置信息,去修改.env对应值即可。我们实例教程使用的Homestead开发环境默认配置,不做修改。如果你没有使用Homestead,则需要根据本地配置修改相应配置值。

我们在讲Windows上安装Homestead的时候,已经演示过数据库连接测试,以及如何在本地使用Navicat连接Homestead的数据库,这里不再赘述,下面直接进入如何使用数据库进行增删改查。

2、数据库初始化

我们在项目根目录使用Artisan命令运行Laravel自带的迁移生成users表和password_reset表:

php artisan migrate

对应在数据库中生成三张表:

运行迁移生成users表

3、使用DB门面进行增删改查

3.1 插入数据

我们使用DB门面执行原生SQL语句,插入操作使用DB门面的insert方法,代码如下:

在浏览器中输入http://laravel.app:8000/test,执行成功后在数据库中插入两条记录:

db-insert-data

3.2 查询语句

查询操作使用DB门面的select方法,代码如下:

在浏览器地址栏输入http://laravel.app:8000/test,输出内容如下:

db-select-data

可以看到select查询返回的结果是数组。而数组中的每一个元素都是PHP对象。

我们还 可以看到在执行查询的时候使用了参数绑定,以避免SQL注入。除此之外还可以使用命名绑定:

效果一样。

3.3 更新语句

更新表记录可以使用DB门面的update方法,该方法返回受影响的行数:

打印结果为1,如果没有更新任何记录则返回0。

3.4 删除语句

删除表记录使用DB门面的delete方法,和update类似,该方法返回被删除的行数:

打印结果为2,表数据都被我们删除了。

3.5 通用语句

除了上述这些DML(insert/update/delete)和DQL(select)语句,SQL语句还包括DCL(create/drop等)和DDL(grant等),要运行后者,我们可以调用DB门面的statement方法:

执行完该语句后,数据表users会被删除。

4、监听查询事件

除此之外,我们还可以通过DB门面的listen方法监听查询事件,比如我们在记录日志和调试的时候这会给我们确定问题提供便利,可以在服务提供者的boot方法中注册该监听器,例如我们在AppServiceProviderboot方法中定义监听器如下:

这样我们运行如下SQL语句:

则浏览器会输出如下内容:

5、数据库事务

很多时候,我们需要执行一连串操作,而其中任何一个操作出错则整个流程失败,需要回退重来,这个时候我们就要用到数据库事务。

DB门面提供两种方式支持数据库事务,一种是调用transaction方法然后传入闭包作为参数,我们将需要进行事务操作的逻辑放到闭包函数内:

另一种是 beginTransactionrollBackcommit三个方法一起使用从而构建一个完整的事务操作:

此外,使用DB门面提供的事务还支持查询构建器和Eloquent ORM数据库操作。

 

from:https://laravelacademy.org/post/854.html