Bonjour,

Voici un problème auquel les développeur de doctrine et symfony n'ont peut-être pas pensé !

Par exemple :
  • Un objet commentaire, lié à un article.
  • Il possède soit possède une relation avec un utilisateur,
  • soit vient d'un visiteur non inscrit, donc sans relation.


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
Comment:
  actAs:
    Timestampable: ~
  columns:
    id:            { type: integer, notnull: true, primary: true, autoincrement:true }
    article_id: { type: integer, notnull: true }
    note:          { type: integer(1), notnull: true, range: [1, 5] }
  relations:
    Article:
      local: article_id
      onDelete: CASCADE
      foreign: id
      foreignAlias: Comments
    
CommentFromUser:
  inheritance:
    type:             column_aggregation
    extends:          Comment
    keyField:         type
    keyValue:         1
  columns:
    content:  { type: string(140), notnull: true, minlength: 5 }
    user_id: { type: integer, notnull: true }
  relations:
    User:
      local: user_id
      onDelete: CASCADE
      foreign: id
      foreignAlias: Comments
    
CommentFromVisitor:
  inheritance:
    type:             column_aggregation
    extends:          Comment
    keyField:         type
    keyValue:         2
  columns:
    content: { type: string(140), notnull: true, minlength: 5 }
    pseudo:  { type: string(140) }
Vous voyez le problème arriver, comme j'utilise la même table, malgré l'héritage, la contrainte d'intégrité bloque l'ajout d'un commentaire d'un visiteur...

Quel moyen d'y remédier proprement ?

Merci !