Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 16-05-2007 15:57:04

j.roc
Nouveau membre
Date d'inscription: 02-05-2007
Messages: 4

[Résolu][Zend_Db]Insertion de données sur des tables dépendantes

Bonjour,

Je développe actuellement une application de gestion de bons de commandes avec le zend framework mais j'ai un probleme pour l'enregistrement de mes données dans la base.
j'ai trouvé pas mal de documentation qui traitent de la selection de données sur des tables dépendantes.
mais je n'ai pas trouvé de solution à mon probleme qui concerne l'enregistrement de ces données.

j'ai 2 tables, une qui contient les informations des bons de commande(nom, adresse, etc) et une autre qui contient les données des produits associés à ces bons. Celle-ci sont associées a 2 modeles : Bdc et Produit
Apres la validation de ces informations je voudrais les sauvegarder dans ces deux tables.

Les champs des tables sont mappés dans les molèles :
Bdc.php

Code:

class Bdc extends Zend_Db_Table
{
    protected $_name = 'bdc';
    protected $_dependentTables = array('produit');
...

Produit.php

Code:

class Produit extends Zend_Db_Table
{
    protected $_name = 'produit';
    protected $_referenceMap    = 
         array(
        'bdc' => array(
            'columns'           => array('bdc_id'),
            'refTableClass'     => 'bdc',
            'refColumns'        => array('id'))
    );
    
}

Vu que je n'ai pas trouvé de méthode pour la sauvegarde, j'ai donc créé une méthode spécifique.

Code:

/** Méthode sauvegardant le bon de commande dans la base de données
    $databdc : Tableau contenant les informations d'un bon de commande
    $dataprod : Tableau contenant les informations des produits associés
    */ 
    public function insertNewBdc($databdc, $dataprod)
    {
        $db = $this->getAdapter();

                parent::insert($databdc);
            $id = $db->lastInsertId();
            $i=0;
            $prod = new Produit();
            foreach ($dataprod as $produit)
            {
                
                $monprod = $prod->fetchNew();
                $monprod->id = $i;
                $monprod->designation = $produit['designation'];
                $monprod->ref = $produit['ref'];
                $monprod->qte = $produit['qte'];
                $monprod->puht = $produit['puht'];
                $monprod->bdc_id = $id;
                $monprod->save();
                $i++;
            }
    }

j'appel cette méthode dans mon controleur

Code:

 
        $bdc = new Bdc();
        $bdc->insertNewBdc($databdc, $dataprod);

L'enregistrement des données relative au bon de commande fonctionne mais le probleme se situe au niveau des produits : Zend Framework refuse de modifier les clés primaire de la table produit.

J'ai egalement essayer de lui passé un tableau des produits associés comme pour les données du bdc mais les clés primaire restent à 0

Ce début solution est-elle valable ?

Existe-t-il une autre méthode pour enregistrer les données en passant par la couche d'abstraction aussi facilement que la selection ?

Ou bien faut-il insérer les données a l'aide de requetes SQL ?

J'espère avoir été assez clair

Merci d'avance de vos réponses

Dernière modification par j.roc (24-05-2007 08:49:57)

Hors ligne

 

#2 16-05-2007 16:26:05

Isilgawen
Membre
Lieu: Limoges
Date d'inscription: 23-03-2007
Messages: 106

Re: [Résolu][Zend_Db]Insertion de données sur des tables dépendantes

Hum déjà je pense que tu peux simplifier ton code comme ceci:

Code:

public function insertNewBdc($databdc, $dataprod){
        $db = $this->getAdapter();
         parent::insert($databdc);
         $id = $db->lastInsertId();
         $prod = new Produit();
         foreach ($dataprod as $produit){
             $produit['bdc_id'] =  $id;
             $prod.insert($produit);
          }
}

Dernière modification par Isilgawen (16-05-2007 18:44:59)

Hors ligne

 

#3 24-05-2007 08:48:32

j.roc
Nouveau membre
Date d'inscription: 02-05-2007
Messages: 4

Re: [Résolu][Zend_Db]Insertion de données sur des tables dépendantes

En simplifiant le code de cette manière les informations s'enregistre correctement dans la base smile

Merci de ton aide

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages