yii2开启事务
public function actionAdd()
{
$model = new Goods();
$model->setScenario('insert'); if ($model->load(Yii::$app->request->post())) { $model->image = UploadedFile::getInstance($model, 'image'); if ($model->validate()) { $model->cover = Yii::$app->security->generateRandomString() . '.' . $model->image->extension;
if (floatval($model->price_original) < 0.01) {
$model->price_original = null;
} $transaction = Yii::$app->db->beginTransaction();
try {
if (!$model->save(false)) {
throw new \Exception('商品添加失败!');
} $filename = Yii::getAlias(Yii::$app->params['goods.coverPath']) . DIRECTORY_SEPARATOR . $model->cover;
if (!$model->image->saveAs($filename)) {
throw new \Exception('封面图片添加失败!');
} // 记录商品库存
$goodsSurplus = new GoodsSurplus();
$goodsSurplus->goods_id = $model->id;
$goodsSurplus->surplus_before = ;
$goodsSurplus->amount = $model->surplus;
$goodsSurplus->surplus_after = $model->surplus;
$goodsSurplus->remark = '初始化库存。'; if (!$goodsSurplus->save(false)) {
throw new \Exception('商品库存记录失败!');
} $transaction->commit();
Yii::$app->session->setFlash('success', '成功添加商品“'.$model->name.'”。');
return $this->refresh();
} catch (\Exception $e) {
$transaction->rollBack();
Yii::$app->session->setFlash('danger', $e->getMessage());
}
}
} return $this->render('form', [
'model' => $model
]);
}
yii2开启事务的更多相关文章
- Yii2中事务的使用
官方是这样的 // $connection其实是数据库连接$transaction = $connection->beginTransaction(); try { $connection-&g ...
- 记录一次bug解决过程:resultType和手动开启事务
一.总结 二.BUG描述:MyBatis中resultType使用 MyBatis中的resultType类似于入参:parameterType.先看IDCM项目中的实际使用案例代码,如下: // L ...
- [原创]MySQL RR隔离级别下begin或start transaction开启事务后的可重复读?
Server version: 5.6.21-log MySQL Community Server (GPL) 前提提要: 我们知道MySQL的RR(repeatable read)隔 ...
- ThinkPHP v3.2.3 数据库读写分离,开启事务时报错:There is no active transaction
如题:ThinkPHP v3.2.3 数据库读写分离,开启事务时报错: ERR: There is no active transaction 刚开始以为是数据表引擎不对造成的,因为 有几张表的引擎是 ...
- 开启事务时mybatis返回主键id
先说一下没有注解的 先给出实体类: public class City { private int city_id; private String city_name; public int getC ...
- 在C#中开启事务
1.为什么要开启事务: 举一个简单的例子:在银行业务中,有一条记账原则,即又借有贷.为了保证这种原则,每发生一笔银行业务,就必须保证会计账目上借方科目和贷方科目至少个少一笔,并且这两笔要么同时成功,要 ...
- Oracle database link中查询会开启事务吗?
关于oracle database link,使用database link相关的查询语句是否会开启事务呢?我们知道,在数据库中一个简单的SELECT查询语句不会产生事务(select for upd ...
- $Django python中使用redis, django中使用(封装了),redis开启事务(管道)
一 Python操作Redis之普通连接 #先安装 pip3 install redis import redis r = redis.Redis(host='127.0.0.1', port=637 ...
- springboot 开启事务以及手动提交事务
添加依赖,sprongboot 会默认开启事务管理 org.springframework.boot spring-boot-starter-jdbc 在需要的服务类里添加注解 @Autowired ...
随机推荐
- python——二分查找算法
从有序列表的候选区data[0:n]开始,通过对待查找的值与候选区中间值的比较,可以使候选区减少一半 二分查找: 在一段数字内,找到中间值,判断要找的值和中间值大小的比较. 如果中间值大一些,则在 ...
- NodeJS笔记(一)-免安装设置
之前在官网下载的nodejs win64版本4.* 最近发现nodejs都已经更新到了7.X 稳定版都升级到了6.X ,nodejs升级的真是神速了,想要升级下, 使用官方给的方法更新失败(使用的是n ...
- # 20165225 《Java程序设计》第一周学习总结
20165225 <Java程序设计>第一周学习总结 1.视频与课本中的学习: 首先是为了运行和开发Java分别安装了JRE和JDK,具体做法在老师给的<Java2 实用教程(第五版 ...
- Jenkins tomcat打包启动脚本,待完善
shell脚本 #!/bin/bashJENKINS_HOME=/usr/local/jenkinsTOMCAT_HOME=/usr/local/jenkins/tomcat-testSHUTDOWN ...
- 从网络上筛选"流媒体"的相关文章
1> 雷神的博客专栏https://blog.csdn.net/leixiaohua1020 [总结]FFMPEG视音频编解码零基础学习方法https://blog.csdn.net/leixi ...
- spring学习(03)之bean实例化的三种方式
bean实体例化的三种方式 在spring中有三中实例化bean的方式: 一.使用构造器实例化:(通常使用的一个方法,重点) 二.使用静态工厂方法实例化: 三.使用实例化工厂方法实例化 第一种.使用构 ...
- Sql server 函数--取值年月
GetDate()是获取当前时间 1.例如获取年月类似 201706 需要改为语句: Select Datename(year,GetDate())+Datename(month,GetDate())
- mysql 解锁
show OPEN TABLES where In_use > 0;show processlist;show status like 'Table%';show status like '%l ...
- 【LeetCode每天一题】Rotate Image(旋转矩阵)
You are given an n x n 2D matrix representing an image.Rotate the image by 90 degrees (clockwise). N ...
- php二维数组搜索
$ar = array( 2 => array( 'catid' => 2, 'catdir' => 'notice', ), ...