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

ORM PHP Discussion :

[propel]build-sql rajoute un champs id


Sujet :

ORM PHP

  1. #1
    Candidat au Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2011
    Messages : 2
    Points : 3
    Points
    3
    Par défaut [propel]build-sql rajoute un champs id
    Bonjour,

    je suis en train de me former sur symfony avec l'ORM propel, pour être précis je n'utilise pas le propel de base mais sfPropelORMPlugin.

    J'ai fais le schema de ma base de donnée, une base très simple mais avec une relation many to many :

    on a donc une table user ( id, nom, prénom, mail, année de naissance ), une table groupe ( id, nom ) et une table usergroup ( userId, goupId ).

    Lorsque je fais la commande build-sql, pas de problème à première vue mais lorsque je lance insert-sql, j'ai l'erreur suivante :

    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
    [propel-sql-exec] Failed to execute: CREATE TABLE `usergroup`
    (
            `userId` INTEGER NOT NULL,
            `groupId` INTEGER NOT NULL,
            `id` INTEGER NOT NULL AUTO_INCREMENT,
            PRIMARY KEY (`userId`,`groupId`,`id`),
            INDEX `usergroup_FI_2` (`groupId`),
            CONSTRAINT `usergroup_FK_1`
                    FOREIGN KEY (`userId`)
                    REFERENCES `user` (`id`),
            CONSTRAINT `usergroup_FK_2`
                    FOREIGN KEY (`groupId`)
                    REFERENCES `group` (`id`)
    ) ENGINE=InnoDB
    [propel-sql-exec] SQLSTATE[42000]: Syntax error or access violation: 1075 Incorr
    ect table definition; there can be only one auto column and it must be defined a
    s a key
    pourtant je ne lui demande pas de me créer de champs id pour cette table là.

    Voici également mon fichier schema.yml :

    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
    propel:
     
      user:
        id:
          type: integer
          primarykey: true
          autoincrement: true
        name:
          type: varchar(100)
          required: true
          index: unique
        surname:
          type: varchar(100)
          required: true
          index: unique
        mail:
          type: varchar(100)
        yearOfBirth:
          type: integer
     
      group:
        id:
          type: integer
          primarykey: true
          autoincrement: true
        name:
          type: varchar(100)
     
      usergroup:
        _attributes:
          isCrossRef: true
        userId:
          type: integer
          foreignTable: user
          foreignReference: id
          primarykey: true
        groupId:
          type: integer
          foreignTable: group
          foreignReference: id
          primarykey: true
    Est-ce qu'il y a un attribut a ajouter pour ne pas avoir de champs id ajouté automatiquement ?

    Merci

  2. #2
    Candidat au Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2011
    Messages : 2
    Points : 3
    Points
    3
    Par défaut
    finalement à force de bidouille j'ai résolu mon problème juste en changeant de disposition mon schema, voici la version qui fonctionne :

    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
    propel:
     
      user:
        id:  { type: integer, primarykey: true, autoIncrement: true }
        name: { type: varchar(100), required: true, index: unique }
        surname: { type: varchar(100), required: true, index: unique }
        mail: { type: varchar(100), index: unique }
        yearOfBirth: { type: integer }
     
      group:
        id:  { type: integer, primarykey: true, autoIncrement: true }
        name: { type: varchar(100), required: true, index: unique }
     
      user_group:
        _attributes: { isCrossRef: true }
        userId: { type: integer, primaryKey: true, foreignTable: user, foreignReference: id }
        groupId: { type: integer, primaryKey: true, foreignTable: group, foreignReference: id }

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 03/09/2009, 16h51
  2. Réponses: 7
    Dernier message: 16/04/2009, 13h02
  3. [SQL] Renommer un champ dans une requête
    Par martonpylon12 dans le forum Requêtes et SQL.
    Réponses: 8
    Dernier message: 15/11/2003, 01h59
  4. [SQL] Compter des champs indépendement l'un de l'autre
    Par rippey dans le forum Requêtes et SQL.
    Réponses: 11
    Dernier message: 29/10/2003, 15h35
  5. [langage] Comment rajouter des champs dans une liste
    Par toto_titi dans le forum Langage
    Réponses: 4
    Dernier message: 28/08/2003, 14h09

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