Обновить запрос в Codeigniter - PullRequest
0 голосов
/ 25 марта 2019

Я хочу обновить данные в базе данных и должен соответствовать двум условиям, тогда только обновит данные в базе данных.

Пожалуйста, посмотрите в моей модели, есть два условия, которое является идентификатороми order_id.Когда назначается только одно условие [ $ this-> db-> where ('order_id', $ id); ], это хорошо работает для одного элемента, но когда в заказе два элемента и выше, оно толькоможно обновить данные для последней строки элементов заказа.

Итак, я пробую с двумя условиями, которые являются [ $ this-> db-> где ('order_id', $ id); ] и [ $ this-> db-> where ('id', $ oid); ], но это не может работать.

Обновлено !!

Я изменил некоторые коды в контроллере и модели. Я получаю сообщение об ошибке: [Преобразование массива в строку], id = Массив И order_id = '10'

Контроллер:

public function EditOrderPage(){
        $id = $this->uri->segment(3);
        $oid = $this->order->GetCusOrderItemID($id);

        $data['title']       = "JCUBE";
        $data['orders']      = $this->order->GetCusOrder($id);
        $data['orderitems']  = $this->order->GetCusOrderItem($id);
        $data['item']        = $this->order->GetItem();
        $data['projectcode'] = $this->order->GetProjectCode();
        $data['payoption']   = $this->order->GetPayOption();
        $data['eppmonth']    = $this->order->GetEppMonth();
        $this->load->view('ordering/header',$data);
        $this->load->view('ordering/edit_order_page',$data);
        $this->load->view('ordering/footer',$data);

        if($this->input->post('update')){ //if press button 'update order'
            $email       = $this->input->post('email');
            $tel         = $this->input->post('telno');
            $address     = $this->input->post('address');
            $projectCode = $this->input->post('projectcode');
            $payOption   = $this->input->post('options');
            $eppMonth    = $this->input->post('eppmonth');
            $RefOrderID  = $this->input->post('ref_order_id');
            $remark      = $this->input->post('remark');
            $grandTotal  = $this->input->post('grandtotal');
            $this->order->UpdateOrderHeader($email,$tel,$address,$projectCode,$payOption,$eppMonth,$RefOrderID,$remark,$grandTotal,$id);

            $post = $this->input->post();
            $arraySize = count($post['item_id']);       
            for($k=0; $k<$arraySize; $k++){
                $itemName = $this->order->GetItemName($post['item_id'][$k]);

                $productId       = $post['item_id'][$k];
                $itemName        = $itemName['item_name']; //to be search in model using productID
                $quantity        = $post['qty'][$k];
                $weight          = $post['weight'][$k];
                $transportation  = $post['transportation'][$k];
                $premium         = $post['gp'][$k];
                $discount        = $post['discount'][$k];
                $unitPrice       = $post['unit_price'][$k];
                $TotalWithoutTax = $post['totalwithouttax'][$k];
                $TotalTax        = $post['totaltax'][$k];
                $TotalAmtInclTax = $post['totalamtincltax'][$k];
                $this->order->UpdateOrderItems($productId,$itemName,$quantity,$weight,$transportation,$premium,$discount,$unitPrice,$TotalWithoutTax,$TotalTax,$TotalAmtInclTax,$oid,$id);

            }
        }
    }

Модель:

public function GetCusOrderItemID($id = NULL){
      $this->db->select('oi.id',$id);
      $this->db->from('order_items oi');
      $this->db->join('order o', 'oi.order_id = o.id');
      $this->db->where('o.id');

      $query = $this->db->get();
      return $query->result_array();
    }

public function UpdateOrderItems($productId,$itemName,$quantity,$weight,$transportation,$premium,$discount,$unitPrice,$TotalWithoutTax,$TotalTax,$TotalAmtInclTax,$oid,$id){
   $OrderItem = array(
                              'product_id'            => $productId,
                              'item'                  => $itemName,
                              'qty'                   => $quantity,
                              'weight'                => $weight,
                              'transportation_price'  => $transportation,
                              'gp'                    => $premium,
                              'discount'              => $discount,
                              'unit_price'            => $unitPrice,
                              'amt_without_tax'       => $TotalWithoutTax,
                              'tax'                   => $TotalTax,
                              'amt_incl_tax'          => $TotalAmtInclTax
                           );
      $this->db->set($OrderItem);
      $this->db->where('id',$oid);
      $this->db->where('order_id',$id);
      $this->db->update('order_items');

Вид:

<?php
                foreach($orderitems as $orderitem) { ?>
                <tr class="item-details">
                    <td><input id="orderitems" type="hidden" class="form-control" name="id" value="<?=$orderitem['id']?>" readonly></td>
                    <td class="">
                            <?php
                            $options = array(
                                             '' => '~Choose An Item~'
                                             );
                            foreach ($item as $rows){
                                $options[$rows->id] = $rows->item_name;
                            }

                            $select = array(
                                            'name' => 'item',
                                            'id' => 'item_id',
                                            'class' => 'form-control'
                                            );
                            echo form_dropdown('item_id[]', $options,set_value('item_name',$orderitem['product_id']),$select);
                            ?>
                    </td>
                    <td class=""><input type="number" id="qty[]" class="item-qty" name="qty[]" step="1" min="0" value="<?=$orderitem['qty']?>"/></td>
                    <td><input type="number" name="weight[]" class="weight" step="any" value="<?=$orderitem['weight']?>"/></td>
                    <td><input type="number" name="transportation[]" class="transporation" step="any" value="<?=$orderitem['transportation_price']?>" readonly/></td>
                    <td><input type="text" id="gp[]"  name="gp[]" value="<?=$orderitem['gp']?>" /></td>
                    <td><input type="text" id="discount[]"  name="discount[]" value="<?=$orderitem['discount']?>" readonly/></td>
                    <td><input type="text" id="unit_price[]"  name="unit_price[]" value="<?=$orderitem['unit_price']?>" /></td>
                    <td align="right">
                        <input type="text" id="totalwithouttax[]" name="totalwithouttax[]" value="<?=$orderitem['amt_without_tax']?>" readonly>
                    </td>
                    <td align="right">
                        <input type="text" id="totaltax[]" name="totaltax[]" value="<?=$orderitem['tax']?>" readonly>
                    </td>
                    <td align="right">
                        <input type="text" id="totalamtincltax[]" name="totalamtincltax[]" value="<?=$orderitem['amt_incl_tax']?>" readonly>
                    </td>
                </tr><br/><br><br><br>
                <?php } ?>

Я хочу обновить элементы с этими двумя условиями.Надеюсь, кто-нибудь может мне помочь.

Ответы [ 2 ]

0 голосов
/ 25 марта 2019

Изменить GetCusOrderItemID функцию следующим образом:

public function GetCusOrderItemID($id = NULL){
    $this->db->select('oi.id item_id');
    $this->db->from('order_items oi');
    $this->db->join('order o', 'oi.order_id = o.id');
    $this->db->where('o.id',$id);

    $query = $this->db->get();
    return $query->result_array();
}

И изменить $oid на $oid[$k]['item_id'] в:

$this->order->UpdateOrderItems($productId,$itemName,$quantity,$weight,$transportation,$premium,$discount,$unitPrice,$TotalWithoutTax,$TotalTax,$TotalAmtInclTax,$oid[$k]['item_id'],$id);
0 голосов
/ 25 марта 2019

Пожалуйста, попробуйте,
Я не знаю, почему вы использовали результат в возвращении модели, но я изменил две строки
Модель:

public function GetCusOrderItemID($id = NULL){
      $this->db->select('oi.id as oid');//changes
      $this->db->from('order_items oi');
      $this->db->join('order o', 'oi.order_id = o.id');
      $this->db->where('o.id');

      $query = $this->db->get();
      return $query->row('oid');//changes
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...