Да, вы можете.Я сделал это, используя symfony и аннотации, так что, думаю, вы могли бы справиться так же хорошо, используя любую среду, которую используете.
Сначала я добавил обе аннотации для сущности:
<?php
use Doctrine\ORM\Mapping as ORM;
use Doctrine\ODM\MongoDB\Mapping\Annotations as ODM;
/**
* User
*
* @ORM\Entity
* @ODM\Document
*/
class User
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer", nullable=false)
* @ORM\Id
* @ODM\Field()
*/
private $id;
/**
* @var string
*
* @ORM\Column(name="email", type="string", length=200, nullable=false)
* @ODM\Field()
*/
private $email;
}
В symfony каталогом по умолчанию для ORM является каталог Entity, для ODM каталогом по умолчанию является Document.Поэтому, если у вас есть объект, который должен быть документом в одно и то же время, вам необходимо настроить любое из двух сопоставлений вручную.
doctrine_mongodb:
document_managers:
default:
mappings:
# Default mapping for the bundle (loads Document/)
DemoBundle: ~
# Extra mapping to load document mappings under Entity/
DualMappingHack:
type: annotation
dir: %kernel.root_dir%/../src/Acme/DemoBundle/Entity
prefix: EntityPrefix
is_bundle: false