今天手頭電商項目有個需求是:將訂單中的優惠券自動發放給買家,因此要只更新優惠券表中的某幾行數據,查了手冊和網絡都沒有解決辦法。php
一開始用循環和遍從來作都是錯的,由於update語句一下就更新掉全部符合條件的行了,而用子查詢當條件來作又很不符合kiss(keep it simple, stupid.)的規範。網絡
因而嘗試將set語句加入ar,這下大功告成。this
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(); }