{sf} admin générator basé sur plusieurs tables
Salut j'ai 5tables ~ comme ceci commentaireObjet(id,content,#memberId,#objetId);
Avec objet qui sont News,sons,videos ...
Bref je veux adminstrer les commentaires.
Or j'aimerai avoir tous les commentaires sur une même page (le mieux aurait été de faire une seule table commentaire...)
Donc j'ai matté le code source et j'ai vu une méthode buildQuery j'ai essayé de modifier un peu mais j'ai pas trop réussi.
Ce genre de chose est - il simple à faire???
Merci
Réponses apportées à cette discussion
Ne fais qu'une seule table Commentaire dans laquelle tu stockes l'id de l'objet commenté ainsi que son type.
Oui j'y ai pensé mais ...
Ma table commentaire sera :
commentaire(id,content,#objetID,#memberId,objet)
avec objet qui sera : news, son , video ...
Si je met le onDelete:Cascade.
Si je supprime un objet news avec l'id 45. Cela supprimera tous les commentaire avec objetId 45 donc aussi les commentaire de du son id 45 , de la video id 45 ...etc..
VOis-tu une solution à ce problème??
MERCI
Avec cette méthode, tu ne pourras pas appliquer de onDelete cascade. Tu devras surcharger le delete() de chaque objet pour intégrer la suppression des commentaires associés.
Ou alors, une autre manière de procéder, c'est de recourir à l'héritage de table grâce à Doctrine. Tu fais une table Comment avec (id, name, email, site, message)... et ensuite tes n rables CommentNews, CommentVideo, CommentMusic... qui dérivent Comment et qui intègrent toute la FK vers les tables de contenu correspondantes. Regarde dans la doc de Doctrine pour y parvenir ;)
Je dois utiliser Simple inheritance ou concrete inheritance??
Je pense faire un truc comme sa :
Commentaire
actAs:
Timestampable: ~
COLUMNS:
membre_id:
type: INTEGER(4)
contenu:
type: clob
notnull: TRUE
relations:
sfGuardUser:
onDelete: CASCADE
local: membre_id
FOREIGN: id
EvenementCommentaire:
inheritance:
extends: Commentaire
type: concrete ou simple ????
COLUMNS:
evenement_id:
type: INTEGER(4)
notnull: TRUE
relations:
Evenement:
onDelete: CASCADE
local: evenement_id
FOREIGN: id
Qu'en penses - tu ??
Merci =)