Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks > symfony
symfony Forum d'entraide sur le framework PHP symfony. Avant de poster : cours symfony et FAQ symfony
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 03/04/2011, 23h43   #1
Membre habitué
 
Avatar de Niki59
 
Homme
Développeur Web
Inscription : mai 2008
Messages : 212
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 23
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : mai 2008
Messages : 212
Points : 136
Points : 136
Par défaut Problème de relation 1-1 avec Doctrine

Bonsoir,

J'ai un problème de relation avec trois tables.
Voici comment elles se présentent :

Citation:
Boulangeries (ma liste de boulangerie)
- id
- nom
Citation:
Pain (Les pains présent dans les boulangeries)
- id
- Boulangerie_id
- TypeDePain_id
Citation:
TypeDePain (Pain coupé, pain rond...)
- id
- nom
Mon problème : il considère mon champ "TypePain_id" comme unique.
Du coup si j'ai 3 TypeDePain je ne peux pas rajouter plus de 3 Pains!


Voici mon schema.yml
Code :
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
Boulangerie:
  columns:
    id:
      primary: true
      type: integer(5)
      autoincrement: true
    title:
      type: string(255)
BoulangeriePain:
  columns:
    id:
      primary: true
      type: integer(5)
      autoincrement: true
    Boulangerie_id:
      type: integer(5)
      notnull: true
    BoulangeriePainType_id:
      unique: false
      type: integer(5)
      notnull: true
  relations:
    Boulangerie:
      local: Boulangerie_id
      foreign: id
    BoulangeriePainType:
      local: BoulangeriePainType_id
      foreign: id
BoulangeriePainType:
  columns:
    id:
      primary: true
      type: integer(5)
      notnull: true
      autoincrement: true
    title:
      type: string(150)
    description:
      type: string
Le schema me semble bon pourtant... ?
Merci.
Niki59 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/04/2011, 09h15   #2
Membre régulier
 
Guillaume M.
Inscription : décembre 2010
Messages : 58
Détails du profil
Informations personnelles :
Nom : Guillaume M.

Informations forums :
Inscription : décembre 2010
Messages : 58
Points : 81
Points : 81
Ce n'est pas une relation 1-1 qu'il faut utiliser mais une Many-Many, et du coup il n'y a pas besoin d'écrire le schéma de la table BoulangeriePain, symfony s'occupera de la générer automatiquement.
gmarsay est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/04/2011, 10h07   #3
Membre habitué
 
Avatar de Niki59
 
Homme
Développeur Web
Inscription : mai 2008
Messages : 212
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 23
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : mai 2008
Messages : 212
Points : 136
Points : 136
Bonjour gmarsay,

Merci pour cette réponse rapide. Je vais essayer ca.
Niki59 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/04/2011, 11h06   #4
Modérateur
 
Avatar de Michel Rotta
 
Homme Michel Rotta
Responsable d'exploitation informatique
Inscription : septembre 2005
Messages : 4 913
Détails du profil
Informations personnelles :
Nom : Homme Michel Rotta
Âge : 49
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Responsable d'exploitation informatique
Secteur : Distribution

Informations forums :
Inscription : septembre 2005
Messages : 4 913
Points : 7 505
Points : 7 505
Effectivement, une relation n-n.

Un peu compliquer à mettre en place la première fois...

Le schéma revu à ma façon et avec la n-n.

Code :
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
 
Boulangerie:
  columns:
    title: string(255)
  relations:
    Pains
      class: Pain
      foreignAlias: Boulangeries
      refClass: BoulangeriePain
 
BoulangeriePain:
  columns:
    Boulangerie_id:
      type: integer
      primary: true
    Pain_id:
      type: integer
      primary: true
  relations:
    Boulangerie:
      foreignAlias: BoulangeriePains
    Pain:
      foreignAlias: BoulangeriePains
 
Pain:
  columns:
    title: string(150)
    description: string
__________________
Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).
  • Pensez à valoriser les réponses pertinantes, cliquez sur le bouton vert +1 pour indiquer votre accord avec la solution proposée.
  • Pensez à utiliser la balise [code] pour afficher du code, elle est cachée sous le bouton [#] dans l'éditeur.
  • Une discussion est terminée ? Alors le bouton est votre ami !
Michel Rotta est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/04/2011, 20h26   #5
Membre habitué
 
Avatar de Niki59
 
Homme
Développeur Web
Inscription : mai 2008
Messages : 212
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 23
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : mai 2008
Messages : 212
Points : 136
Points : 136
Bonsoir,

Oui mais dans ce cas comment comment je sais de quel type de pain il s'agit ?

Concrètement je cherche à voir ma table Pain avec :
id : clé primaire
typePain_id : une clé étrangère
boulangerie_id : une deuxième clé étrangère

EDIT :

Bon après avoir changé ma relation 1-1 pour une relation 1-n et quelques rebuild ca a marché.
Niki59 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/04/2011, 12h46   #6
Modérateur
 
Avatar de Michel Rotta
 
Homme Michel Rotta
Responsable d'exploitation informatique
Inscription : septembre 2005
Messages : 4 913
Détails du profil
Informations personnelles :
Nom : Homme Michel Rotta
Âge : 49
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Responsable d'exploitation informatique
Secteur : Distribution

Informations forums :
Inscription : septembre 2005
Messages : 4 913
Points : 7 505
Points : 7 505
Ce que je t'ai donné en exemple est une relation n-n entre boulangerie et pain. Chaque boulangerie peu produire un ou plusieurs pain et chaque pain peut être produit dans une ou plusieurs boulangerie.

La table BoulangeriePain n'est qu'une table de liaison qui ne devrait jamais être directement affichée.
__________________
Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).
  • Pensez à valoriser les réponses pertinantes, cliquez sur le bouton vert +1 pour indiquer votre accord avec la solution proposée.
  • Pensez à utiliser la balise [code] pour afficher du code, elle est cachée sous le bouton [#] dans l'éditeur.
  • Une discussion est terminée ? Alors le bouton est votre ami !
Michel Rotta est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/04/2011, 14h58   #7
Membre habitué
 
Avatar de Niki59
 
Homme
Développeur Web
Inscription : mai 2008
Messages : 212
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 23
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : mai 2008
Messages : 212
Points : 136
Points : 136
Merci pour l'exemple et les explications.

C'est sympa de donner un peu de votre temps pour aider ceux qui rencontrent des problèmes sur le framework.

Bonne journée!
Niki59 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h44.


 
 
 
 
Partenaires

Hébergement Web