2010-05-05 7 views
0

La fonction de commande de mise à jour trouve toutes les lignes de commande de la commande en cours.
Boucle passant par la soustraction de la quantité commandée au niveau du stock et la détention de la nouvelle valeur du niveau de stock en $ newstock. Tout bon.
Mais ne sauvegardera pas.
Echoue "succès" et la valeur correcte mais la base de données n'est pas mise à jour.cakephp ne pas enregistrer la valeur de mise à jour vers la table associée, mais aucune erreur

Le champ Statut de l'ordre est mis à jour avec la même syntaxe de code.
Il a également les mêmes relations avec la ligne de commande. (Fonction appelée de Orderline Controller)

Les relations de table sont:

'Product'hasMany = array (' Orderline ');
'Commander' hasMany = array ('Orderline');
'Orderline' belongsTo = array ('Commande', 'Produit');

function updateOrder(){ 
    $this->data['Order']['id'] = $this->getOrderid(); 
    $orderproducts = $this->Orderline->find('all',array('conditions' =>  
          array('Orderline.order_id' => $this->data['Order']['id']))); 

foreach($orderproducts as $orderproduct){ 
    $newstock = $orderproduct['Product']['stock']-$orderproduct['Orderline']['quantity']; 
    $this->data['Product']['stock']= $newstock; 

    if($this->Product->saveAll($this->data)){ 
    echo "success" ; 
    }else{ 
    echo "not saved"; 
    } 
} 

    $this->data['Order']['status']= 1; 
    $this->Order->saveall($this->data); 

}

Répondre

0

Résolu.

Il avait ajouté de nouvelles lignes à la table Product.

Cette ligne manquait à l'insertion dans la boucle foreach, lui rappelant d'utiliser l'ID de produit actuel pour savoir où insérer les nouvelles données.

$ this-> data ['Product'] ['id'] = $ orderproduct ['Product'] ['id'];

0

Je tiens à ajouter que l'exécution de l'enregistrement silencieux a échoué en utilisant saveAll car je n'avais pas effacé le dossier APP/tmp/cache.

Questions connexes