2010-05-30 8 views
0

J'ai signalé un problème similaire mais il n'a pas pu être résolu. Je crée une base de données relationnelle d'utilisateurs et de groupes mais pour une raison quelconque, je ne peux pas insérer correctement des données de test avec des appareils. Voici un exemple du schéma:Problème Symfony fk lors de l'insertion

User: 
    actAs: { Timestampable: ~ } 
    columns: 
    name: { type: string(255), notnull: true } 
    email: { type: string(255), notnull: true, unique: true } 
    nickname: { type: string(255), unique: true } 
    password: { type: string(300), notnull: true } 
    image: { type: string(255) } 

Group: 
    actAs: { Timestampable: ~ } 
    columns: 
    name: { type: string(500), notnull: true } 
    image: { type: string(255) } 
    type: { type: string(255), notnull: true } 
    created_by_id: { type: integer } 
    relations: 
    User: { onDelete: SET NULL, class: User, local: created_by_id, foreign: id, foreignAlias: groups_created } 

FanOf: 
    actAs: { Timestampable: ~ } 
    columns: 
    user_id: { type: integer, primary: true } 
    group_id: { type: integer, primary: true } 
    relations: 
    User: { onDelete: CASCADE, local: user_id, foreign: id, foreignAlias: fanhood } 
    Group: { onDelete: CASCADE, local: group_id, foreign: id, foreignAlias: fanhood } 

Et voici les données que j'essaie d'entrer:

User: 
    user1: 
    name: Danny 
    email: [email protected] 
    nickname: danny 
    password: f05050400c5e586fa6629ef497be 

Group: 
    group1: 
    name: Mets 
    type: sports 

FanOf: 
    fans1: 
    user_id: user1 
    group_id: group1 

Je continue à obtenir cette erreur:

SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (`krowdd`.`fan_of`, CONSTRAINT `fan_of_user_id_user_id` FOREIGN KEY (`user_id`) REFERENCES `user` (`id`) ON DELETE CASCADE) 

Les utilisateurs et les groupes sont étant clairement créé avant le "fanhood" est alors pourquoi je reçois cette erreur ??

Merci!

Répondre

5

Dans vos appareils fichier:

FanOf: 
    fans1: 
    user_id: user1 
    group_id: group1 

devrait être

FanOf: 
    fans1: 
    User: user1 
    Group: group1 

En utilisant user_id et group_id, Doctrine attend une valeur entière. Si vous utilisez les noms de relations, vous pouvez passer l'objet que vous créez ailleurs dans les appareils.

+0

ÉTONNANT !! J'ai essayé de comprendre cela pendant 2 semaines! – Danny

+0

+1 de moi. Je pensais que j'avais fait cela, mais la capitalisation compte! –

+0

Juste génial !! Merci! –

Questions connexes