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

PHP & Base de données Discussion :

[Doctrine] Colonne identifiant automatique


Sujet :

PHP & Base de données

  1. #1
    Membre habitué

    Profil pro
    Inscrit en
    Mars 2004
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Mars 2004
    Messages : 126
    Points : 129
    Points
    129
    Par défaut [Doctrine] Colonne identifiant automatique
    Bonjour à tous!

    Je me lance juste dans l'utilisation du framework Symfony. Pour ce faire, j'ai commencé le fameux tutoriel "Jobeet". J'ai une petite question concernant le Day 3 : The Data Model.

    Je m'explique : Dans cette partie du tutoriel, il est question de générer une base de donnée relationnelle à partir d'un fichier YAML et en utilisant Doctrine. Le fichier YAML proposé en exemple est comme suit :

    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
    44
    45
    46
    47
    48
    49
     
    # config/doctrine/schema.yml
    JobeetCategory:
      actAs: { Timestampable: ~ }
      columns:
        name: { type: string(255), notnull: true, unique: true }
     
    JobeetJob:
      actAs: { Timestampable: ~ }
      columns:
        category_id:  { type: integer, notnull: true }
        type:         { type: string(255) }
        company:      { type: string(255), notnull: true }
        logo:         { type: string(255) }
        url:          { type: string(255) }
        position:     { type: string(255), notnull: true }
        location:     { type: string(255), notnull: true }
        description:  { type: string(4000), notnull: true }
        how_to_apply: { type: string(4000), notnull: true }
        token:        { type: string(255), notnull: true, unique: true }
        is_public:    { type: boolean, notnull: true, default: 1 }
        is_activated: { type: boolean, notnull: true, default: 0 }
        email:        { type: string(255), notnull: true }
        expires_at:   { type: timestamp, notnull: true }
      relations:
        JobeetCategory: { onDelete: CASCADE, local: category_id, foreign: id, foreignAlias: JobeetJobs } 
     
    JobeetAffiliate:
      actAs: { Timestampable: ~ }
      columns:
        url:       { type: string(255), notnull: true }
        email:     { type: string(255), notnull: true, unique: true }
        token:     { type: string(255), notnull: true }
        is_active: { type: boolean, notnull: true, default: 0 }
      relations:
        JobeetCategories:
          class: JobeetCategory
          refClass: JobeetCategoryAffiliate
          local: affiliate_id
          foreign: category_id
          foreignAlias: JobeetAffiliates
     
    JobeetCategoryAffiliate:
      columns:
        category_id:  { type: integer, primary: true }
        affiliate_id: { type: integer, primary: true }
      relations:
        JobeetCategory:  { onDelete: CASCADE, local: category_id, foreign: id }
        JobeetAffiliate: { onDelete: CASCADE, local: affiliate_id, foreign: id }
    Ma question est donc la suivante : Des champs "id" sont-ils créés automatiquement pour chaque table?
    • Si oui, un champ "id" sera-t-il aussi créé pour JobeetCategoryAffiliate même si cette table possède déjà une clé primaire?
    • Si non, quels seront alors les clés primaires des tables JobeetCategory, JobeetJob ou JobeetAffiliate?

    Enfin, si aucun champ "id" n'est créé, qu'est ce que référence JobeetJob.caterory_id?

    Si la réponse à ma première question est "oui", ça expliquerait tout le reste évidemment...

  2. #2
    Membre actif
    Profil pro
    Développeur Web
    Inscrit en
    Octobre 2006
    Messages
    251
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Octobre 2006
    Messages : 251
    Points : 292
    Points
    292
    Par défaut
    Le plus simple est que tu génère ta base de données à partir du schema, la colonne id doit ce créer dans toute les tables qui n'ont pas de clé primaire (j'en suis pas très sur, j'ai pas encore fait la version avec doctrine)

  3. #3
    Nouveau membre du Club
    Profil pro
    Ingénieur
    Inscrit en
    Novembre 2007
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur

    Informations forums :
    Inscription : Novembre 2007
    Messages : 18
    Points : 34
    Points
    34
    Par défaut
    >Ma question est donc la suivante : Des champs "id" sont-ils créés
    >automatiquement pour chaque table?

    oui,

    >Si oui, un champ "id" sera-t-il aussi créé pour JobeetCategoryAffiliate
    >même si cette table possède déjà une clé primaire?

    non,

    -- Maurice

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 117
    Points : 123
    Points
    123
    Par défaut
    En faite ce qui ce passe dans YML :

    Si tu ne définie pas pour un champ dans une table , la valeur primary, il va te mettre l'id automatiquement.

    Par contre si tu met la valeur primary dans un de tes champs (Comme dans JobeetCategoryAffiliate, ou l'a il y a deux clés primaire en question), il ne va pas te créer un champ id...

    voila en esperant avoir été clair.

Discussions similaires

  1. [MySQL] Colonne identifiant
    Par safari25 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 13/04/2009, 22h53
  2. Identifier automatiquement le "SENDER"
    Par helmis dans le forum Débuter
    Réponses: 5
    Dernier message: 03/05/2008, 14h49
  3. Masquer des colonnes vides automatiquement
    Par Madmoiselle dans le forum Excel
    Réponses: 10
    Dernier message: 08/04/2008, 12h18
  4. Gridview - Masquer une colonne générée automatiquement
    Par predalpha dans le forum ASP.NET
    Réponses: 4
    Dernier message: 29/02/2008, 11h01
  5. Réponses: 11
    Dernier message: 30/10/2006, 13h51

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