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

Symfony PHP Discussion :

Entité pour une messagerie interne [2.x]


Sujet :

Symfony PHP

  1. #1
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2011
    Messages : 23
    Par défaut Entité pour une messagerie interne
    Bonjour,

    Je dois un réaliser un petit module de messagerie interne, le procédé est assez simple :

    J'ai une entité User et une entité Messagerie. L'utilisateur peut envoyer un message à 1 ou plusieurs autres utilisateurs.

    Je dois absolument créer 2 lignes dans ma table messagerie car il y a un statut de message lu ou non lu.

    Pour stocker l'utilisateur qui envoi, voilà ce que je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    /**
         * @ORM\ManyToOne(targetEntity="MonProjet\UserBundle\Entity\UsrUser")
         * @ORM\JoinColumn(name="msg_fk_idUserFrom", referencedColumnName="id", nullable=false)
         */
        private $prmUserFrom;
    Mais pour maintenant incrémenter les utilisateurs qui recoivent, je ne vois pas comment faire.

  2. #2
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2011
    Messages : 104
    Par défaut
    Utilise une liaison ManyToMany vers ta table Utilisateurs

    http://www.doctrine-project.org/docs...unidirectional

  3. #3
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2011
    Messages : 23
    Par défaut
    C'est ce que j'ai fait au début mais cela ne permet pas de gérer un statut de lecture différent pour chaque destinataires.

    J'ai obter pour une seconde entité de destinataires puis une relation many to many entre les deux.

  4. #4
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2011
    Messages : 104
    Par défaut
    En gros tu as besoin de mettre une colonne statut sur ta table de liason genre "unread" , "read" , "answered".?
    J'aurai fait:

    TableDeMessages <- OneToMany -> TableIntermediareAvecStatut <- ManyToOne -> Utilisateur

    Tu dois donc gérer 3 entités.

    J'ai obter pour une seconde entité de destinataires puis une relation many to many entre les deux.
    C'est à dire tu as une Entité qui est une copie de tes Utilisateurs avec un état de lecture en plus ? J'ai du mal à visualiser le schema.

  5. #5
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2011
    Messages : 23
    Par défaut
    Tu as raison, ma solution ne servait à rien.

    J'ai bien opter pour ta solution one to many vers table avec statut puis many to one vers utilisateur.

    Maintenant c'est dans la conception du formulaire que je bloque un peu.

  6. #6
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2011
    Messages : 23
    Par défaut
    Je créé un formulaire lié a ma première entité, dans ce formulaire, je dois récupérer la liste des utilisateurs qui se trouve dans la deuxième entité. Normalement, pour faire cela, je créé un formulaire de la seconde entité et dans le formulaire de la première, je l'appelle comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $builder->add('Dest','collection', array(
                        'type' => new FormDest()
            ));
    Mais pour que ca marche, ma collection doit être rempli hors là elle est vide pour le moment puisque je n'ai envoyé aucun message.

  7. #7
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2011
    Messages : 104
    Par défaut
    Ton formulaire c'est pour envoyer un message c'est ça? Nomme tes entités pour les prochains posts ça sera plus simple pour comprendre.
    Disons une Entité Message, une User et la liaison sur MessageUser

    Si tu veux afficher une liste de tous les destinataires possibles, c'est à dire de tous tes utilisateurs tu peux utiliser le field 'entity' de symfony2 http://symfony.com/doc/2.0/reference...es/entity.html
    Le code pourrait être du genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $builder->add('dests','entity',array(
                                          'class'=>'User',
                                          'multiple'=>true,
                                          'expanded'=>true,
    ));
    Celà va te donner des checkboxes que tu pourras cocher pour indiquer les destinataires. Si tu préfère un "select" tu mets expanded à false.

    Ensuite dans ton Entité message il faut que tu définisse une propriété $dests qui représentera un ArrayCollection de tes destinataires. Il te faudra donc implémenter une méthode addDest et getDests dans ton entité. Exemple
    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
     
    class Message
    {
       //tes propriétés
     
      protected $dests; //array contenant tes destinataires, n'est pas persisté en base
     
     
      public function __construct()
      {
          //ce que tu as déjà mis
          //.....
     
     
          $this->dests  =  new ArrayCollection(); //n'oublie pas de rajouter le use qui va bien
      }   
     
      public function addDest($dest)
      {
          $messageUser = new MessageUser(); //pareil faire l'inclusion au début avec use
          $messageUser->setUser($dest);
          $messageUser->setMessage($this);
          $this->addMessageUser($messageUser);
      }
    Voilà à peu près le code, il n'est pas testé et sûrement pas optimisé. Essai de voir ce que tu peux faire déjà avec. Pense aussi à la validation.

    Ensuite pour ton form, le fait d'afficher la liste des destinataires possibles ça peut devenir vite limité lorsque tu auras beaucoup d'utilisateurs.
    Le mieux c'est de remplacer les checkboxes par un champ de type input text avec de l'autocomplétion comme sur les messageries email. Par contre pour ça je ne sais pas du tout comment faire.
    Regarde les plugins qui existent déjà sur symfony2bundles

  8. #8
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2011
    Messages : 23
    Par défaut
    Merci bien, tout ceci m'a bien aidé

  9. #9
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2011
    Messages : 104
    Par défaut
    De rien
    tiens moi au courant quand ça marchera, j'aimerai bien voir un peu ce que ça donne

  10. #10
    Membre averti
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mai 2011
    Messages : 57
    Par défaut
    Bonjour,

    j'aime bien ta solution et j'aime bien savoir plus si elle à marché au finale ou pas encore ?

    Merci

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

Discussions similaires

  1. Optimisation de requête pour une messagerie
    Par okin66 dans le forum Requêtes
    Réponses: 0
    Dernier message: 31/05/2009, 15h39
  2. [MySQL] Créer une messagerie interne
    Par yanng dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 22/05/2008, 10h34
  3. Plusieurs entités pour une même relation
    Par Mandotnet dans le forum Schéma
    Réponses: 1
    Dernier message: 08/04/2007, 19h13
  4. [OE] configuration pour une messagerie de l'université
    Par aminos40 dans le forum Outlook Express / Windows Mail
    Réponses: 1
    Dernier message: 26/03/2007, 09h47

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