Précédent   Forum des professionnels en informatique > PHP > Outils > Zend > Zend Framework > Zend_Db
Zend_Db Forum d'entraide pour le composant Zend_Db du Zend Framework (création de requêtes, abstraction, ORM etc.). Avant de poster -> FAQ Zend_Db.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 15/06/2011, 15h42   #1
Candidat au titre de Membre du Club
 
Inscription : octobre 2009
Messages : 109
Détails du profil
Informations forums :
Inscription : octobre 2009
Messages : 109
Points : 11
Points : 11
Par défaut Ajout dans une table d'association à clé composée

Salut à tous,

J'ai vu quelques postes sur internet sur le sujet mais la réponse ne me satisfait pas . Je vous expose le souci :

J'ai 3 tables - Operations - Rapports - Sauvegarder

Sauvegarder est la table d'association entre Rapports et Operations ( liaison *-*). La clé primaire de sauvegarder est donc une clé composée ( faite avec la clé primaire de Operations et celle de Rapports).

Maintenant j'aimerais ajouter dans cette table un lien entre deux instances que j'ai précédemment crées ET verifier si un tel lien n'existe pas déja. J'ai lu qu'il fallait utiliser un tableau en tant que clé primaire, mais mon test du doublon n'est pas très concluant.

Code de la table :

Code :
1
2
3
4
5
class Format_Model_DbTable_Sauvegardes extends Zend_Db_Table_Abstract
{
    protected $_name = 'sauvegarder';
    protected $_primary  = array('id_rapport', 'no_dossier') ; 
}
Code d'ajout :

Code :
1
2
3
4
 
$sauvegarde = array('id_rapport' => ($rapport_objet->id_rapport) , 'no_dossier' => ($op->n_op)) ;
if ($tableSauvegarde->fetchRow ($tableSauvegarde->select()->where("id_rapport = ". $rapport_objet->id_rapport." AND no_dossier= ".$op->n_op)== null )) ;  
$tableSauvegarde->insert($sauvegarde) ;
Merci d'avance
Knarf64 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/06/2011, 17h55   #2
Membre confirmé
 
Patrick Barroca
Inscription : mai 2008
Messages : 178
Détails du profil
Informations personnelles :
Nom : Patrick Barroca

Informations forums :
Inscription : mai 2008
Messages : 178
Points : 204
Points : 204
Hello,

Est-ce que ce ne serait pas par hasard juste un petit problème de lisibilité de ton code ?
Il me semble que tu as fait un if vide en mettant le ";" juste après ta condition.

Du coup l'insert doit se faire à tous les coups

Citation:
Envoyé par Knarf64 Voir le message
Salut à tous,
Code :
1
2
3
4
 
$sauvegarde = array('id_rapport' => ($rapport_objet->id_rapport) , 'no_dossier' => ($op->n_op)) ;
if ($tableSauvegarde->fetchRow ($tableSauvegarde->select()->where("id_rapport = ". $rapport_objet->id_rapport." AND no_dossier= ".$op->n_op)== null )) ;  
$tableSauvegarde->insert($sauvegarde) ;
Dans un premier temps je te conseille de TOUJOURS*mettre des accolades, ça évite ce genre d'erreur.
patbator est déconnecté   Envoyer un message privé Réponse avec citation 10
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 21h16.


 
 
 
 
Partenaires

Hébergement Web