我需要在symfony2中使用odm进行这种模式,我有问题,因为relasion是ManyToMany而我不知道如何做到这一点。我需要帮助。 我有实体" Persona"和实体" Direccion"这些生成实体" Persona-has-Direccion"用他的ids和属性" viveAqui"。
Persona{
_id: 1000,
nombre: 'Carlos',
apellidos: 'Gracia',
genero: 'M',
direcciones: [{
direccion_id: 1,
viveAqui: true
}.{
direccion_id: 2,
viveAqui: true
}]
}
我的代码:
/**
* @MongoDB\Document
*/
class Direccion
{
/**
* @MongoDB\Id(strategy="auto")
*/
private $id;
/**
* @MongoDB\String
*/
private $pais;
/**
* @MongoDB\String
*/
private $estado;
/**
* @MongoDB\String
*/
private $ciudad;
/**
* @MongoDB\Boolean
*/
private $viveAqui;
}
/**
* @MongoDB\Document
*/
class Persona
{
/**
* @MongoDB\Id(strategy="auto")
*/
private $id;
/**
* @MongoDB\String
*/
private $nombre;
/**
* @MongoDB\String
*/
private $apellidos;
/**
* @MongoDB\String
*/
private $genero;
}
答案 0 :(得分:0)
不确定这是什么意思:
这些生成实体" Persona-has-Direccion"
但我认为基本上简单的参考就是你所需要的:
class Persona
{
/**
*
* @MongoDB\ReferenceMany(targetDocument="Direccion", simple=true)
*/
protected $direcciones;
然后生成setter和getter(在这种情况下为adder和remover):
php app/console doctrine:mongodb:generate:documents YourBundle
您可以稍后保存:
$persona = new Persona();
$direccion = new Direccion();
$persona->addDireccion($direccion);
$dm->persist($persona);
$dm->flush($persona);
答案 1 :(得分:0)
好的,我有一个解决方案,但我不知道它是否正确。
我的代码:
/**
* @MongoDB\Document
*/
class Persona
{
/**
* @MongoDB\Id(strategy="auto")
*/
private $id;
/**
* @MongoDB\EmbedMany(targetDocument="PersonaDireccion")
*/
private $direccionPersona;
/**
* @MongoDB\String
*/
private $nombre;
/**
* @MongoDB\String
*/
private $apellidos;
/**
* @MongoDB\String
*/
private $genero;
}
class PersonaDireccion
{
/**
* @MongoDB\Id(strategy="auto")
*/
private $id;
/**
* @MongoDB\ReferenceOne(targetDocument="Direccion", cascade={"persist", "remove"})
*/
private $direccion;
/**
* @MongoDB\Boolean
*/
private $viveAqui;
}
/**
* @MongoDB\Document
*/
class Direccion
{
/**
* @MongoDB\Id(strategy="auto")
*/
private $id;
/**
* @MongoDB\String
*/
private $pais;
/**
* @MongoDB\String
*/
private $estado;
/**
* @MongoDB\String
*/
private $ciudad;
}
现在我有3个文件。该文件" PersonaDireccion"有参考文献" Direccion"。该文件" Persona"已经嵌入了许多" PersonaDireccion"。架构是下一个:
Persona{
_id: 1000,
nombre: 'Carlos',
apellidos: 'Gracia',
genero: 'M',
direcciones: [{
direccionPersona_id: 1,
direccion_id: 1,
viveAqui: true
}.{
direccionPersona_id: 2,
direccion_id: 2,
viveAqui: true
}]
}