Codeigniter 在Active Record中限制批量更新数目
今天手头电商项目有个需求是:将订单中的优惠券自动发放给买家,所以要只更新优惠券表中的某几行数据,查了手册和网络都没有解决办法。
一开始用循环和遍历来做都是错的,因为update语句一下就更新掉所有符合条件的行了,而用子查询当条件来做又很不符合kiss(keep it simple, stupid.)的规范。
于是尝试将set语句加入ar,这下大功告成。
public function status($order_id, $slug)
{
if($slug==='2')
{
# 发货流程, 先判断是不是优惠券
if($this->_is_coupon_order($order_id))
{
$this->load->model('m_cart', 'cart', true);
$undiscounted = $this->cart->items($order_id);
$discounted = $this->cart->items($order_id, true);
$merged = array_merge($undiscounted, $discounted);
$this->db->where('status', 0)
->where('rule_id', $merged[0]->type_id)
->limit($merged[0]->item_quantity)
->set('user_id', $merged[0]->user_id)
->update('coupon');
}
$this->db->where('id', $order_id)->set('status', 2);
}
$this->db->update('order');
return $this->db->affected_rows();
}
Codeigniter 在Active Record中限制批量更新数目的更多相关文章
- mysql下的将多个字段名的值复制到另一个字段名中(批量更新数据)字符串拼接cancat实战例子
		
mysql下的将多个字段名的值复制到另一个字段名中(批量更新数据)mysql字符串拼接cancat实战例子: mysql update set 多个字段相加,如果是数字相加可以直接用+号(注:hund ...
 - Mybatis中进行批量更新(updateBatch)
		
更新多条数据,每条数据都不一样 背景描述:通常如果需要一次更新多条数据有两个方式,(1)在业务代码中循环遍历逐条更新.(2)一次性更新所有数据(更准确的说是一条sql语句来更新所有数据,逐条更新的操作 ...
 - jdbctemplate中的批量更新使用,BigDecimal与造型的联系和区别
		
//jdbctemplate批量新增的使用MENU_ID_LIST是前端页面传递到后端控制层,再由控制层传到实现层的List //JdbcTemplate是spring jdbctemplate通过注 ...
 - 从源码的角度看 React JS 中批量更新 State 的策略(下)
		
这篇文章我们继续从源码的角度学习 React JS 中的批量更新 State 的策略,供我们继续深入学习研究 React 之用. 前置文章列表 深入理解 React JS 中的 setState 从源 ...
 - 架构模式中的Active Record和Data Mapper
		
架构模式中的Active Record和Data Mapper 概念 在简单应用中,领域模型是一种和数据库结构一致的简单结构,对应每个数据库表都有一个领域类,在这种情况下,有必要让每个对象负责数据库的 ...
 - [转]MySQL批量更新死锁案例分析
		
文章出处:http://blog.csdn.net/aesop_wubo/article/details/8286215 问题描述 在做项目的过程中,由于写SQL太过随意,一不小心就抛了一个死锁异常, ...
 - DAL、DAO、ORM、Active Record辨析
		
转自:http://blog.csdn.net/suiye/article/details/7824943 模型 Model 模型是MVC中的概念,指的是读取数据和改变数据的操作(业务逻辑).一开始我 ...
 - Statement和PreparedStatement批量更新
		
优势:1.节省传递时间. 2.并发处理. PreparedStatement: 1) addBatch()将一组参数添加到PreparedStatement对象内部. 2) executeBatch( ...
 - mysql批量更新、多表更新、多表删除
		
本文介绍下,mysql中进行批量更新.多表更新.多表删除的一些实例,有需要的朋友可以参考下. 本节主要内容: mysql的批量更新.多表更新.多表删除 一,批量更新: 复制代码代码示例: update ...
 
随机推荐
- Badboy录制脚本参数化
			
Jmeter录制脚本多采用Badboy工具 简单参数修改 第一步,先录制场景: a.开始录制,打开浏览器www.sogou.com b.在输入框中输入文字“Badboy" c.回车,关闭录制 ...
 - [delphi]极域学生端解除键盘鼠标锁定退出全屏广播-强制窗口化-源代码
			
v2.0 2015-07-11 更新了V2.0 版本 发布在吾爱破解论坛 欢迎下载使用 http://www.52pojie.cn/thread-382769-1-1.html ---------- ...
 - windows server 无人值守安装
			
使用 answer file:AutoUnattend.xml 来无人值守安装,到了选系统这步 还是要手动选择一个系统,这是为什么?怎么设置可以默认进入GUI的系统进行安装啊?
 - Flex 中画图工具(drawTool)失效
			
做项目的时候画图工具突然失效,解决了半天都不行,最后将画图结束的函数map_drawEndHandler写在方法里面的时候,运行却能够画图了,不知道是什么原理,比较头疼,左思右想,都感觉有点怪怪的,虽 ...
 - eclipse安装svn和maven插件以及m2e-extras
			
相关介绍: 1.SVN是Subversion的简称,是一个开放源代码的版本控制系统,相较于RCS.CVS,它采用了分支管理系统,它的设计目标就是取代CVS.互联网上很多版本控制服务已从CVS迁移到Su ...
 - find命令:忽略一个目录或者多个目录
			
example: find ./ ! -path "./output/*" ! -path "./output1/*" -type f | xargs grep ...
 - C++设计模式-Adapter适配器模式(转)
			
Adapter适配器模式作用:将一个类的接口转换成客户希望的另外一个接口.Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作. 分为类适配器模式和对象适配器模式. 系统的数据和 ...
 - linux命令(7):mv命令
			
mv命令 mv命令是move的缩写,可以用来移动文件或者将文件改名(move (rename) files),是Linux系统下常用的命令,经常用来备份文件或者目录. 1.命令格式: mv [选项] ...
 - linux grep -I 属性
			
忽略大小写的查找: grep -i 'address' test.log --> address ADDRESS
 - 郑捷《机器学习算法原理与编程实践》学习笔记(第四章 推荐系统原理)(二)kmeans
			
(上接第二章) 4.3.1 KMeans 算法流程 算法的过程如下: (1)从N个数据文档随机选取K个文档作为质心 (2)对剩余的每个文档测量其到每个质心的距离,并把它归到最近的质心的类 (3)重新计 ...