Laravel学习笔记(四)---操作数据库--原生SQL语句
来源:互联网 发布:linux 分配权限 编辑:程序博客网 时间:2024/06/11 03:31
Laravel支持多种数据库,包括MySQL、Postgres、SQLite和SQL Server,在Laravel中连接数据库和查询数据库都非常简单,我们可以使用多种方式与数据库进行交互,包括
原生SQL语句、查询构建器以及Eloquent ORM。
本节我们先演示如何使用原生SQL在Laravel应用中对数据库进行增删改查。
原生SQL语句
DB::select('select * from users where id = ?', [1]);
DB::insert('insert into users (id, name, email, password) values (?, ?, ? , ? )',
[1, 'Laravel','laravel@test.com','123']);
DB::update('update users set name="LaravelAcademy" where name = ?', ['Academy']);
DB::delete('delete from users');
监听查询事件
除此之外,我们还可以通过DB门面的listen方法监听查询事件,比如我们在记录日志和调试的时候这会给我们确定问题提供便利,可以在服务提供者的boot方法中注册该监听器,例如我们在AppServiceProvider的boot方法中定义监听器如下:
/**
* 启动所有应用服务
*
* @return void
*/
public function boot()
{
DB::listen(function($sql, $bindings, $time) {
echo 'SQL语句执行:'.$sql.',参数:'.json_encode($bindings).',耗时:'.$time.'ms';
});
}
这样我们运行如下SQL语句:
DB::insert('insert into users (id, name, email, password) values (?, ?, ? , ? )',
[3, 'LaravelAcademy','laravel-academy@test.com','123']);
则浏览器会输出如下内容:
SQL语句执行:insert into users (id, name, email, password) values (?, ?, ? , ? ),参数:[3,"LaravelAcademy","laravel-academy@test.com","123"],耗时:1.26ms
数据库事务
很多时候,我们需要执行一连串操作,而其中任何一个操作出错则整个流程失败,需要回退重来,这个时候我们就要用到数据库事务。
DB门面提供两种方式支持数据库事务,一种是调用transaction方法然后传入闭包作为参数,我们将需要进行事务操作的逻辑放到闭包函数内:
DB::transaction(function () {
DB::table('users')->update(['id' => 1]);
DB::table('posts')->delete();
});
另一种是 beginTransaction、 rollBack和 commit三个方法一起使用从而构建一个完整的事务操作:
DB::beginTransaction();
if($somethingIsFailed){
DB::rollback();
return false;
}
DB::commit();
原生SQL语句、查询构建器以及Eloquent ORM。
本节我们先演示如何使用原生SQL在Laravel应用中对数据库进行增删改查。
原生SQL语句
DB::select('select * from users where id = ?', [1]);
DB::insert('insert into users (id, name, email, password) values (?, ?, ? , ? )',
[1, 'Laravel','laravel@test.com','123']);
DB::update('update users set name="LaravelAcademy" where name = ?', ['Academy']);
DB::delete('delete from users');
监听查询事件
除此之外,我们还可以通过DB门面的listen方法监听查询事件,比如我们在记录日志和调试的时候这会给我们确定问题提供便利,可以在服务提供者的boot方法中注册该监听器,例如我们在AppServiceProvider的boot方法中定义监听器如下:
/**
* 启动所有应用服务
*
* @return void
*/
public function boot()
{
DB::listen(function($sql, $bindings, $time) {
echo 'SQL语句执行:'.$sql.',参数:'.json_encode($bindings).',耗时:'.$time.'ms';
});
}
这样我们运行如下SQL语句:
DB::insert('insert into users (id, name, email, password) values (?, ?, ? , ? )',
[3, 'LaravelAcademy','laravel-academy@test.com','123']);
则浏览器会输出如下内容:
SQL语句执行:insert into users (id, name, email, password) values (?, ?, ? , ? ),参数:[3,"LaravelAcademy","laravel-academy@test.com","123"],耗时:1.26ms
数据库事务
很多时候,我们需要执行一连串操作,而其中任何一个操作出错则整个流程失败,需要回退重来,这个时候我们就要用到数据库事务。
DB门面提供两种方式支持数据库事务,一种是调用transaction方法然后传入闭包作为参数,我们将需要进行事务操作的逻辑放到闭包函数内:
DB::transaction(function () {
DB::table('users')->update(['id' => 1]);
DB::table('posts')->delete();
});
另一种是 beginTransaction、 rollBack和 commit三个方法一起使用从而构建一个完整的事务操作:
DB::beginTransaction();
if($somethingIsFailed){
DB::rollback();
return false;
}
DB::commit();
1 0
- Laravel学习笔记(四)---操作数据库--原生SQL语句
- Laravel框架学习(使用DB门面操作数据库 原生SQL)
- Laravel学习笔记(四)数据库 数据库迁移案例
- Laravel基础篇学习笔记(二):数据库操作
- laravel学习笔记(3)— 数据库操作之
- laravel学习笔记(4)— 数据库操作之
- Laravel入门教程(四)- 数据库操作之
- 数据库学习笔记(二)sql 语句
- 数据库学习笔记(SQL语句)
- laravel框架SQL语句操作
- 安卓学习-(数据存储(数据库,原生sql,和原生安卓操作))
- 学习笔记-Laravel 数据库 聚合+Join 查找语句。
- SQL学习笔记:常用SQL语句操作
- mybatis学习笔记(四)SQL映射语句
- MySQL数据库操作及SQL语句笔记
- laravel DB类SQL语句操作(CURD)
- laravel DB类SQL语句操作(CURD)
- 数据库操作语句(SQL)
- 【学习python兴趣起源】计算字符串中字母出现的次数
- 欢迎使用CSDN-markdown编辑器
- MySQL二
- [BZOJ4555][Tjoi2016&Heoi2016]求和(FFT)
- RecyclerView使用介绍
- Laravel学习笔记(四)---操作数据库--原生SQL语句
- CAFFE FOR WINDOWS安装与配置
- Ubuntu14.04下安装Composer
- Python基础
- LSB Matching 隐写算法分析与理解
- Qt实现读取显示obj文件——动态绑定纹理与消除纹理
- iOS Develop Learning
- maven+spring+springmvc+mybatis整合
- 配置Linux静态IP