【问题标题】:Multiple if statement to update the filed same model or change the records to another model using Cakephp多个 if 语句来更新归档的相同模型或使用 Cakephp 将记录更改为另一个模型
【发布时间】:2017-02-01 20:31:30
【问题描述】:

我从请求中获取数组值,我的第一个 if 语句对我来说效果很好,在第二个 if 语句的情况下,它只将一行迁移到我的 salereturn 表,但我希望请求中的所有记录被迁移到 salereturn 表。

if ($this->request->is('post')) {

    $Productsalesrec = !empty($this->request->data['Productsales']) ? $this->request->data['Productsales'] : "";

    if (!empty($Productsalesrec)) {
        foreach ($Productsalesrec as $Productsales) {

            if ($Productsales['status'] == 'MoveToShipment') {

                $this->Productsales->id = $Productsales['id'];
                $this->request->data['Productsales']['status'] = $Productsales['status'];
                $this->Productsales->save($this->request->data);
            }

            if ($Productsales['status'] == 'Returned') {

                $productsalesretArr = array();
                $productsalesre = $this->Productsales->find('all', array('conditions' => array('Productsales.product_sales_slno' => $id)));

                $this->request->data['Salesreturn']['sales_order_date'] = $productsalesre['Productsales']['sales_order_date'];
                $this->request->data['Salesreturn']['product_sale_id'] = $productsalesre['Productsales']['id'];
                $this->request->data['Salesreturn']['sales_date'] = $productsalesre['Productsales']['expected_delivery_date'];
                $this->request->data['Salesreturn']['product_sales_slno'] = $productsalesre['Productsales']['product_sales_slno'];
                $this->request->data['Salesreturn']['price_per_unit_order'] = $productsalesre['Productsales']['sales_price_per_unit_order'];
                $this->request->data['Salesreturn']['total_amount'] = $productsalesre['Productsales']['sales_price_per_unit_order'] * $Productsales['tot_unit'];
                $this->request->data['Salesreturn']['total_unit'] = $Productsales['tot_unit'];
                $this->request->data['Salesreturn']['product_id'] = $Productsales['product_id'];
                $this->request->data['Salesreturn']['amount_returned'] = 0;
                $this->request->data['Salesreturn']['status'] = 'Returned';
                $this->request->data['Salesreturn']['payment_method'] = 'Cash on Delivery';
                $this->request->data['Salesreturn']['created_date'] = date('Y-m-d H:i:s');
                $this->request->data['Salesreturn']['created_by'] = $this->Auth->user('id');

                $this->Salesreturn->save($this->request->data['Salesreturn']);

                if ($Productsales['total_unit'] == $Productsales['tot_unit']) {
                    $this->Productsales->delete($Productsales['id']);
                } elseif ($Productsales['total_unit'] >= $Productsales['tot_unit']) {
                    $this->Productsales->id = $Productsales['id'];
                    $this->request->data['Productsales']['total_unit'] = $Productsales['total_unit'] - $Productsales['tot_unit'];
                    $this->Productsales->save($this->request->data);
                }

                $prodtype = $this->Producttype->find('first', array('conditions' => array('Producttype.id' => $productsalesre['Productsales']['product_type_id'])));
                $this->Producttype->id = $prodtype['Producttype']['id'];

                $prodquantity = $prodtype['Producttype']['quantity'] + ($Productsales['total_unit'] - $Productsales['tot_unit']);
                $prodtotstck = $prodtype['Producttype']['total_unit_stock'] + ($Productsales['total_unit'] - $Productsales['tot_unit']);

                $this->Producttype->saveField('total_unit_stock', $prodtotstck);
                $this->Producttype->saveField('quantity', $prodquantity);
            }
        }
        $this->redirect(array('action' => 'index'));
    }
}

【问题讨论】:

  • 我从请求和我的第一个 if 语句中获取数组值 --> if($Productsales['status'] == 'MoveToShipment') 在第二个 if 的情况下对我很有用语句 --> if($Productsales['status'] == 'Returned') 它只将一行迁移到我的 salereturn 表,但我希望请求中的所有记录都迁移到 salereturn 表。

标签: cakephp cakephp-2.3


【解决方案1】:

我不确定是否真的理解这个问题......

你的意思是这部分代码没有想要的行为吗?

if($Productsales['status'] == 'Returned') {
    $this->request->data['Salesreturn']['sales_order_date']=$productsalesre['Productsales']['sales_order_date'];    
    ...
    $this->Salesreturn->save($this->request->data['Salesreturn']);
}

您的条件“$Productsales['status'] == 'Returned'”是问题吗?

可能只有您的帖子数组的一行具有此状态。

【讨论】:

  • 有两个 if 语句,第一个 if 是单独更新同一个表中的状态,第一个 if 没有提供,第二个 if 语句必须从下面的查询中复制与 product_sales_slno 相关的所有行到另一个名为 sales return 的表... $productsalesre=$this->Productsales->find('all', array('conditions' => array('Productsales.product_sales_slno' => $id)));
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-29
相关资源
最近更新 更多