2017-07-05 5 views
0

MyController.phpComment mettre à jour l'inventaire lorsqu'un nouvel achat est effectué? MySQL, PHP, Codeigniter

public function save_order() 
{ 

    $order = array( 
     'createdBy'=>$this->vendorId, 
     'createdDtm'=>date('Y-m-d H:i:s') 
    );  

    $ord_id = $this->transaction_model->insert_order($order); 

    if ($cart = $this->cart->contents()): 
     foreach ($cart as $item): 
      $order_detail = array(
       'transactionId'   => $ord_id, 
       'productId'  => $item['id'], 
       'quantity'  => $item['qty'], 
       'price'   => $item['price'] 
      );  


      $this->transaction_model->insert_order_detail($order_detail); 
     endforeach; 
    endif; 

    redirect('transactionListing'); 
} 

transaction_model.php

public function insert_order($data) 
{ 
    $this->db->insert('tbl_transaction', $data); 
    $id = $this->db->insert_id(); 
    return (isset($id)) ? $id : FALSE; 
} 

public function insert_order_detail($data) 
{ 
    $this->db->insert('tbl_detailtransaction', $data); 

    $this->db->update('tbl_product', 'quantity', 'quantity' - $data->quantity, 'productId', $data->productId); 
} 

Ce que je suis en train de faire est, à chaque fois que se fait un nouvel achat, la quantité du produit mis à jour avec le nouvelle valeur. Le problème avec le code que j'ai écrit est la quantité du produit mis à jour à 0 valeur zéro. Peux-tu me donner un coup de main? Je vous remercie.

+1

double possible de [champ incrément de mise à jour de requête plus 1 CodeIgniter] (https://stackoverflow.com/questions/12904308/update-query-increment-field-plus-1- codeigniter) –

+0

vous n'utilisez pas la clause where sur laquelle la mise à jour de base sera faite –

Répondre

0

Essayez ceci:

$this->db->set("quantity", "`quantity` - $data->quantity", FALSE); 
$this->db->update("tbl_product"); 
+0

merci, mais ça ne marche pas. Une erreur PHP a été rencontrée Gravité: Notification Message: Essayer d'obtenir la propriété de non-objet –

+0

Ensuite, j'essaie de changer $ data-> quantity en $ data ['quantity'] et le résultat est Erreur d'analyse: erreur de syntaxe , inattendu '' (T_ENCAPSED_AND_WHITESPACE), attendant l'identificateur (T_STRING) ou la variable (T_VARIABLE) ou le numéro (T_NUM_STRING) –

+0

essayez la réponse mise à jour. 'quantity' entre guillemets simples. – Shihas