我需要使用ORM数据库实现FOSUserBundle,使用MongoDB(ODM数据库)实现FOSMessageBundle。它可以吗?
我使用ORM配置FOSUserBundle并且有效。
我正在试图使用文档https://github.com/FriendsOfSymfony/FOSMessageBundle/blob/master/Resources/doc/01b-odm-models.md来配置FOSMessageBundle它出现的问题:
/**
* @MongoDB\ReferenceOne(targetDocument="Acme\UserBundle\Document\User")
*/
protected $sender;
我没有Acme \ UserBundle \ Document \ User,我有Acme \ UserBundle \ Entity \ User。
如果我把Acme \ UserBundle \ Entity \ User不起作用。
我尝试使用http://doctrine-mongodb-odm.readthedocs.org/en/latest/cookbook/blending-orm-and-mongodb-odm.html,但我需要帮助。
另一种选择是在MongoDB中创建一个重复的User表,但我不知道如何做到这一点。
感谢您的解决方案Nawdal Serrar。
我阅读了文档并尝试了这一点。不要工作,能帮帮我吗?
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;
答案 0 :(得分:0)
这就是您所需要的,您可以引用ODM和ORM实体https://github.com/Atlantic18/DoctrineExtensions/blob/master/doc/references.md
之间的关系