使用相同的Entity/Document-Class通过Doctrine将数据存储在MongoDB和MySQL中

yno*_*not 4 doctrine mongodb symfony

我需要帮助.情况就是这样.我正在使用Symfony2 + FOSRestBundle,我创建了我的Entity-Classes,通过Doctrine将我的数据存储在MySQL中.我还编写了所有控制器来获取数据并直接将其转换为我的数据库.这很好.

namespace Stat\ContentBundle\Entity;
use Doctrine\ORM\Mapping as ORM;

/** 
 * @ORM\Entity
 * @ORM\Table(name="agegroups")
 */
 class Table
 {
 * @ORM\Column(name="id", type="smallint")
 * @ORM\Id
 * @ORM\GeneratedValue(strategy="IDENTITY")
 */
 protected $id;

 /**
 * @ORM\Column(name="description", type="string", length=50)
 * @Type("string")
 */
 protected $description;
Run Code Online (Sandbox Code Playgroud)

现在我确实想要使用相同的Entity声明并使用更多信息扩展它以便与MongoDB一起使用.我想将我的数据存储在MySQL中,另外还存储在MongoDB中.要使用mongodb-odm-bundle重用代码,我必须使用命名空间Document - 而这只是问题的开始.如果我想重用我的控制器,我也必须重写MongoDB的代码.

namespace Stat\ContentBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use Doctrine\ODM\MongoDB\Mapping\Annotations as MongoDB;

/** 
 * @MongoDB\Document
 * @ORM\Entity
 * @ORM\Table(name="agegroups")
 */

 class Table
 {
 * @ORM\Column(name="id", type="smallint")
 * @ORM\Id
 * @MongoDB\Id
 * @ORM\GeneratedValue(strategy="IDENTITY")
 */
 protected $id;

 /**
 * @ORM\Column(name="description", type="string", length=50)
 * @MongoDB\String
 * @Type("string")
 */
 protected $description;

 /**
 * @ORM\Column(name="mySqlOnly", type="string", length=50)
 * @Type("string")
 */
 protected $mySqlOnly;

 /**
 * @MongoDB\String
 */
 protected $mongoDbOnly;    
Run Code Online (Sandbox Code Playgroud)

是否有一种简单的方法可以为基于文档的数据库和关系数据库使用Doctrine-database模式?

web*_*ers 5

也许这有助于: 混合ORM和MongoDB ODM

由于你有一个实体加上一个文档管理器,因此很容易使用与Doctrine2的数据库nybrid.