2015-03-17 2 views
0

J'ai besoin d'implémenter FOSUserBundle en utilisant la base de données ORM et FOSMessageBundle en utilisant MongoDB (base de données ODM). Est-ce que c'est posible?FOSUserBundle utilisant ORM et FOSMessageBundle utilisant MongoDB

Je configure FOSUserBundle en utilisant ORM et fonctionne.

Je triying pour configurer FOSMessageBundle en utilisant la documentation https://github.com/FriendsOfSymfony/FOSMessageBundle/blob/master/Resources/doc/01b-odm-models.md le problème est ici:

/** 
* @MongoDB\ReferenceOne(targetDocument="Acme\UserBundle\Document\User") 
*/ 
protected $sender; 

Je ne pas avoir Acme \ UserBundle \ Document \ User, je Acme \ UserBundle \ Entité \ User.

Si je mets Acme \ UserBundle \ Entity \ User ne fonctionne pas. J'essaie d'utiliser http://doctrine-mongodb-odm.readthedocs.org/en/latest/cookbook/blending-orm-and-mongodb-odm.html mais j'ai besoin d'aide.

Une autre option est de créer une table utilisateur en double dans MongoDB mais je ne sais pas comment je peux le faire.

Merci pour votre solution Nawdal Serrar.

J'ai lu la documentation et essayé ceci. Ne fonctionne pas, pouvez-vous m'aider s'il vous plaît?

Message.php

/** 
* @MongoDB\Document 
*/ 
class Message extends BaseMessage{ 
    /** 
    * @MongoDB\Id 
    */ 
    protected $id; 

    /** 
    * @MongoDB\EmbedMany(targetDocument="xxx\MensajeriaBundle\Document\MessageMetadata") 
    */ 
    protected $metadata; 

    /** 
    * @MongoDB\ReferenceOne(targetDocument="xxx\MensajeriaBundle\Document\Thread") 
    */ 
    protected $thread; 


    /** 
    * @Gedmo\ReferenceMany(type="entity", class="xxx\WebBundle\Entity\usuarios", mappedBy="senderMongo") 
    */ 
    protected $sender; 


    public function __construct() 
    { 
     $this->metadata = new \Doctrine\Common\Collections\ArrayCollection(); 
     $this->createdAt = new \DateTime(); 
    } 

} 

MessageMetadata.php

/** 
* @ODM\EmbeddedDocument 
*/ 
class MessageMetadata extends BaseMessageMetadata 
{ 
    /** 
    * @Gedmo\ReferenceMany(type="entity", class="xxx\WebBundle\Entity\usuarios", mappedBy="participantMesssageMongo") 
    */ 
    protected $participant; 



} 

Thread.class

/** 
* @MongoDB\Document 
*/ 
class Thread extends BaseThread 
{ 
    /** 
    * @MongoDB\Id 
    */ 
    protected $id; 

    /** 
    * @MongoDB\ReferenceMany(targetDocument="xxx\MensajeriaBundle\Document\Message") 
    */ 
    protected $messages; 

    /** 
    * @MongoDB\EmbedMany(targetDocument="xxx\MensajeriaBundle\Document\ThreadMetadata") 
    */ 
    protected $metadata; 

    /** 
    * @Gedmo\ReferenceMany(type="entity", class="xxx\WebBundle\Entity\usuarios", mappedBy="participantsMongo") 
    */ 
    protected $participants; 


    /** 
    * @Gedmo\ReferenceMany(type="entity", class="xxx\WebBundle\Entity\usuarios", mappedBy="createdByMongo") 
    */ 
    protected $createdBy; 

} 

ThreadMetadata.php

/** 
* @ODM\EmbeddedDocument 
*/ 
class ThreadMetadata extends BaseThreadMetadata 
{ 
    /** 
    * @Gedmo\ReferenceMany(type="entity", class="xxx\WebBundle\Entity\usuarios", mappedBy="participantThreatMongo") 
    */ 
    protected $participant; 



} 

usuarios.php

/** 
    * @Gedmo\ReferenceOne(type="document", class="xxx\MensajeriaBundle\Document\Message", inversedBy="sender", identifier="senderId") 
    */ 
    private $senderMongo; 

    /** 
    * @ORM\Column(type="string", nullable=true) 
    */ 
    private $senderId; 

    /** 
    * @Gedmo\ReferenceOne(type="document", class="xxx\MensajeriaBundle\Document\MessageMetadata", inversedBy="participant", identifier="participantMessageId") 
    */ 
    private $participantMessageMongo; 

    /** 
    * @ORM\Column(type="string", nullable=true) 
    */ 
    private $participantMessageId; 

    /** 
    * @Gedmo\ReferenceOne(type="document", class="xxx\MensajeriaBundle\Document\Thread", inversedBy="participants", identifier="participantsId") 
    */ 
    private $participantsMongo; 

    /** 
    * @ORM\Column(type="string", nullable=true) 
    */ 
    private $participantsId; 

    /** 
    * @Gedmo\ReferenceOne(type="document", class="xxx\MensajeriaBundle\Document\Thread", inversedBy="createdBy", identifier="createdById") 
    */ 
    private $createdByMongo; 

    /** 
    * @ORM\Column(type="string", nullable=true) 
    */ 
    private $createdById; 

    /** 
    * @Gedmo\ReferenceOne(type="document", class="xxx\MensajeriaBundle\Document\ThreadMetadata", inversedBy="participant", identifier="participantThreadId") 
    */ 
    private $participantThreadMongo; 

    /** 
    * @ORM\Column(type="string", nullable=true) 
    */ 
    private $participantThreadId; 

Répondre