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 :

Clé primaire obligatoire


Sujet :

Zend_Db PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de kaking
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    753
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2008
    Messages : 753
    Par défaut Clé primaire obligatoire
    bonjour a tous!

    'oilou, j'ai créé une table qui fait la liaison entre deux tables :

    elle contient l'id_user et l'id_article correspondant au user



    sauf que quand je fais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $data = array(  'uu_user_id'             => $Unite->getUserId($member->cuu_id),
                            'uu_produit_unite_id'          => $Unite->getProduitUniteId($item['id']),
                            'uu_quantite'    => $Unite->getQuantite($item['quantity'])
                        );//nom des champs et leur valeurs passé dans le tableau
     
                $this->getDbTable()->insert($data);
    ce message apparait :
    exception 'Zend_Db_Table_Exception' with message 'Primary key column(s) () are not columns in this table

    effectivement, cette table n'a pas d'id, mais elle n'en a pas non plus besoin!

    que feriez vous a ma place siouplais?

    ou est le probleme ? merci



    modif: voici ma classe dbTable au cas ou ^^

    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
    class Produit_Model_DbTable_UserUnite extends Zend_Db_Table_Abstract
    {
        public function __construct()
        {
            $options = array(   'db'                => 'db',
                                'name'              => 'user_unite',
                                'primary'           => '',
                                'rowClass'          => 'Zend_Db_Table_Row',  // Valeur par défaut
                                'rowsetClass'       => 'Zend_Db_Table_Rowset', // Valeur par défaut
                                'referenceMap'      => array(), 
                                'dependentTables'   => array(), // Valeur par défaut
                                //'metadataCache'     => ''
                            );
     
            parent::__construct( $options );
        }
    }

  2. #2
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Vouais les clés primaires c'est obligatoire.
    Toute table doit posséder une clé primaire. Zend_Db_Table ne fonctionne pas avec les tables sans clé primaire. Vous pouvez les déclarer la(les) colonne servant de clé primaire grâce à la propriété protégée de la classe $_primary. Celle-ci peut être soit une chaîne, dans le cas d'une clé sur une colonne, ou un tableau de chaînes pour une clé sur plusieurs colonnes (clé primaire composée).
    Mais coup de bol, ce n'est pas obligatoirement auto-incrémenté

    Si ta clé primaire, ce sont les deux clés étrangères de ta table, ça va donner quelque chose comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $options = array(   'db'                => 'db',
                                'name'              => 'user_unite',
    'primary'  => array('uu_user_id', 'uu_produit_unite_id'), //on définit une clé primaire composée
    'sequence' => false, //clé non auto-incrémentée
                                'rowClass'          => 'Zend_Db_Table_Row',  // Valeur par défaut
                                'rowsetClass'       => 'Zend_Db_Table_Rowset', // Valeur par défaut
                                'referenceMap'      => array(), 
                                'dependentTables'   => array(), // Valeur par défaut
                                //'metadataCache'     => ''
                            );
    http://framework.zend.com/manual/fr/zend.db.table.html
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  3. #3
    Membre éclairé Avatar de kaking
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    753
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2008
    Messages : 753
    Par défaut
    * respect

    *applause





  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    215
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 215
    Par défaut
    Btw, si on déclare que dal dans notre modèle (juste le nom de la table), quand on se sert du modèle est-ce que ZF va requêter la base pour connaître toutes les infos ???

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

Discussions similaires

  1. Clés primaires/étrangères obligatoires?
    Par ganguill dans le forum SQL
    Réponses: 13
    Dernier message: 20/04/2010, 11h13
  2. Obligatoire : lisez les règles du forum : MAJ 06/08/2010
    Par Anomaly dans le forum Mode d'emploi & aide aux nouveaux
    Réponses: 0
    Dernier message: 03/07/2008, 13h46
  3. clefs primaires obligatoires?
    Par mikew75 dans le forum Langage SQL
    Réponses: 7
    Dernier message: 26/10/2007, 14h40
  4. À lire OBLIGATOIREMENT avant de poster sur ce forum
    Par ok.Idriss dans le forum Débats sur le développement - Le Best Of
    Réponses: 2
    Dernier message: 24/09/2006, 23h21
  5. Une fonction avec des attributs non obligatoires
    Par YanK dans le forum Langage
    Réponses: 5
    Dernier message: 15/11/2002, 13h39

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