Codeigniter:如何更新不会影响特定列的金额

Posted

技术标签:

【中文标题】Codeigniter:如何更新不会影响特定列的金额【英文标题】:Codeigniter: How to update an amount that will not affect a specific columns 【发布时间】:2018-01-14 06:57:33 【问题描述】:

大家好,我在模型中的查询有问题,我会在解释之前向您展示代码。

for($x = 1; $x <= count($this->input->post('subparticulars')); $x++) 

   $feetype = $this->input->post('subparticulars')[$x];
   $student = $this->input->post('substudentid');
   $schoolyear = $this->input->post('subschoolyeardata');
   $month = $this->input->post('month');

   $payment = $this->input->post('subpaymentamount')[$x];

   $this->db->set('statement_amount', '`statement_amount` -'. $payment, FALSE);

   $this->db->where(array('feetype_id !=' => 2, 'feetype_id !=' => 3, 'feetype_id' => $feetype, 'student_id' => $student, 'schoolyear_id' => $schoolyear, 'month_id' => $month));

   $status3 = $this->db->update('tbl_statement');
 

在这里,我有一个添加动态添加行函数,其中包含子明细和子支付中多次付款的金额和详细信息,我正在运行一个查询,该查询将在我的 statement_amounts 中减去我的付款,正如您在 $this 中看到的那样->db->设置。现在,我的 where 子句有问题,如果您尝试理解我的 where 子句,这就是条件。

我想更新我的所有费用,除了具有 feetype_id: 2 和 3 的费用,但另一个费用类型_id 将被更新,我该如何实现。当我运行代码时,它仍然会减去 feetype_id 为 2 和 3 的费用。

【问题讨论】:

【参考方案1】:

这是正确答案

for($x = 1; $x <= count($this->input->post('subparticulars')); $x++) 

   $feetype = $this->input->post('subparticulars')[$x];
   $student = $this->input->post('substudentid');
   $schoolyear = $this->input->post('subschoolyeardata');
   $month = $this->input->post('month');

   $payment = $this->input->post('subpaymentamount')[$x];

   if ($feetype == 2 OR $feetype == 3)
   
      $this->db->set('statement_amount', '`statement_amount` -'. $payment, FALSE);

      $this->db->where(array('feetype_id' => $feetype, 'student_id' => $student, 'schoolyear_id' => $schoolyear));

      $status3 = $this->db->update('tbl_statement');
           
   else 
      $this->db->set('statement_amount', '`statement_amount` -'. $payment, FALSE);

      $this->db->where(array('feetype_id' => $feetype, 'student_id' => $student, 'schoolyear_id' => $schoolyear, 'month_id' => $month));

      $status3 = $this->db->update('tbl_statement');
        
 

【讨论】:

以上是关于Codeigniter:如何更新不会影响特定列的金额的主要内容,如果未能解决你的问题,请参考以下文章

更新表方案而不影响 Laravel 中的数据

如果特定列的字段存在,如何更新

Phpmyadmin+codeigniter 如何自动更新我的数据?

如何将所有XML扩展路由到特定方法codeigniter?

php Event Tickets Plus v4.6 +:保存后将所有WooCommerce门票分配到特定产品类别(创建或更新,不会影响旧刻度)

php Event Tickets Plus v4.6 +:保存后将所有WooCommerce门票分配到特定产品类别(创建或更新,不会影响旧刻度)