IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Zend_Db PHP Discussion :

Gestion des contraintes d'intégritées multiples


Sujet :

Zend_Db PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de erehcab
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    215
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 215
    Par défaut Gestion des contraintes d'intégritées multiples
    Bonjour à tous,

    J'aimerai savoir comment gérer les contraintes d'intégritées multiples avec Zend.

    Voilà mes tables concernées :

    articles (id_articles, titre, contenu, extrait)
    article_rubrique (id_article, id_rubrique)
    rubrique (id_rubrique, titre)

    Voilà mes class de tables:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
     
    class Table_Article extends Zend_Db_Table 
    {
    	 /**
         * Nom de la table (vue)
         *
         * @var string
         */
     
        protected $_name = 'article';
     
        /**
         * Clé primaire de la table.
         * 
         * @var string
         */
     
        protected $_primary = 'id_article';
     
        /**
         * Liaisons entre les tables
         *
         * @var array
         */
     
        protected $_referenceMap = array(
        	'utilisateur' => array(
        		'columns' => 'id_utilisateur',
        		'refTableClass' => 'Table_Utilisateur'
        	   	),
        	'article_rubrique' => array(
        		'columns' => array('id_article', 'id_rubrique'),
        		'refTableClass' => 'Table_ArticleRubrique'
        	)
        );
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
     
    class Table_ArticleRubrique extends Zend_Db_Table 
    {
    	 /**
         * Nom de la table (vue)
         *
         * @var string
         */
     
        protected $_name = 'article_rubrique';
     
        /**
         * Clé primaire de la table.
         * 
         * @var string
         */
     
        protected $_primary = array('id_article', 'id_rubrique');
     
         /**
         * La clé primaire n'est pas auto-incrémentée
         *
         * @var bool
         */
     
        protected $_sequence = true;
     
        /**
         * Liaisons entre les tables
         *
         * @var array
         */
     
        protected $_referenceMap = array(
        	'article' => array(
        		'columns' => 'id_article',
        		'refTableClass' => 'Table_Article'
        	   	),
        	'rubrique' => array(
        		'columns' => 'id_rubrique',
        		'refTableClass' => 'Table_ArticleRubrique'
        ));
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
     
    class Table_Rubrique extends Zend_Db_Table 
    {
    	 /**
         * Nom de la table (vue)
         *
         * @var string
         */
     
        protected $_name = 'rubrique';
     
        /**
         * Clé primaire de la table.
         * 
         * @var string
         */
     
        protected $_primary = 'id_rubrique';
     
        /**
         * Liaisons entre les tables
         *
         * @var array
         */
     
        protected $_referenceMap = array(
        	'utilisateur' => array(
        		'columns' => 'id_utilisateur',
        		'refTableClass' => 'Table_Utilisateur'
        	),
        	'rubrique' => array(
        		'columns' => 'parent',
        		'refTableClass' => 'Table_Rubrique'
        	),
        	'article_rubrique' => array(
        		'columns' => array('id_article', 'id_rubrique'),
        		'refTableClass' => 'Table_ArticleRubrique'
        	)
        );
    }
    L'idée c'est de pouvoir lier un article à plusieurs rubriques mais je ne vois pas bien comment m'y prendre et surtout si Zend propose des solutions pour résoudre ce genre de contraintes.

  2. #2
    Membre Expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Par défaut
    Je ne déclarerais de relation que dans la table Article_Rubrique, qui est dépendante des deux autres. La doc de ZF est assez explicite sur le sujet :
    Déclarez un tableau $_referenceMap dans les classes de chaque table dépendante (qui "reçoit une clé"). C'est un tableau associatif, dit de "rôles". Un rôle définit quelle table est parente dans la relation, et quelle est sa colonne de parenté.
    En effet, je ne vois pas de cascade nécessaire entre les articles et les rubriques.

  3. #3
    Membre confirmé Avatar de erehcab
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    215
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 215
    Par défaut
    Ok merci de ton aide (ralala les brutes avec des ours ... imbattable )

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Gestion des contraintes dans les applications Access
    Par Tofalu dans le forum Sondages et Débats
    Réponses: 5
    Dernier message: 22/05/2014, 03h14
  2. [Data] Gestion des unités de persistance multiple
    Par Khaled.Noordin dans le forum Spring
    Réponses: 1
    Dernier message: 14/09/2012, 13h47
  3. Réponses: 0
    Dernier message: 30/12/2011, 15h00
  4. [QThread] Problème de gestion des threads après connexions multiples sur un serveur
    Par vince-29 dans le forum Multithreading
    Réponses: 5
    Dernier message: 23/11/2010, 21h28
  5. gestion des contraintes d'unicité
    Par GMI3 dans le forum Oracle
    Réponses: 2
    Dernier message: 05/12/2006, 17h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo