原生SQL
使用的类文件
Hyperf\DbConnection\Db
CURD
<?php
use Hyperf\DbConnection\Db;
// 查询
$users = Db::select('SELECT * FROM `user` WHERE gender = ?',[1]); // 返回array
foreach($users as $user){
var_dump($user);
}
// 插入
$inserted = Db::insert('INSERT INTO user (id, name) VALUES (?, ?)', [1, 'Hyperf']); // 返回是否成功 bool
// 更新
$affected = Db::update('UPDATE user set name = ? WHERE id = ?', ['John', 1]); // 返回受影响的行数 int
// 删除
$affected = Db::delete('DELETE FROM user WHERE id = ?', [1]); // 返回受影响的行数 int
事务
- 第一种:自动管理,如果闭包内的操作执行成功会自动提交,如果闭包内有异常错误会自动回滚
- 第二种:手动管理
<?php
use Hyperf\DbConnection\Db;
// 自动提交
Db::transaction(function () {
Db::table('user')->update(['votes' => 1]);
Db::table('posts')->delete();
});
// 手动提交
Db::beginTransaction();
try{
// Do something...
Db::commit();
} catch(\Throwable $ex){
Db::rollBack();
}
问题?
- 考虑一下laravel 框架 在 事件|job消费时调用两次,第一次开启事务,直接抛出异常,第二次消费时会有什么问题,怎么样去规避
- 在hyperf中是怎么处理的
文档更新时间: 2021-09-24 16:57 作者:赵豪