Привет, после нескольких часов поиска, я наконец сдаюсь, я не могу найти какой-либо способ сделать это, я хочу знать, возможно ли создать отношение EmbedMany, используя ассоциативный массив php.
Я могу использовать @field (type = "hash"), но затем я не могу добавить встроенный документ к этому ключу!
Вот код, который у меня сейчас есть:
<?php
namespace Entity;
/**
* @Document(collection="object_types")
*/
class OType
{
/**
* @Id
* @var integer
*/
private $id;
/**
* @Field(type="string")
* @var string
*/
private $name;
/**
* @EmbedMany(targetDocument="Property")
*/
private $properties = array();
/**
* Node Type
*
* @param string $name
*/
public function __construct($name)
{
$this->name = $name;
}
/**
* Set name
*
* @param string $name
* @return void
*/
public function setName($name)
{
$this->name = $name;
}
/**
* Get name
*
* @return string
*/
public function getName()
{
return $this->name;
}
/**
* Add property
*
* @param Property $property
*/
public function addProperty(Property $property)
{
$this->properties[$property->getName()] = $property;
}
/**
* Get properties
*
* @return Property[]
*/
public function getProperties()
{
return $this->properties;
}
}
Я хочусделать что-то вроде этого:
$property = new Property();
$property->setName('memberof');
$property->setType('string');
$type = new OType();
$type->setName('user');
$type->addProperty($property);
И получить такой результат:
{
"_id": {
"$oid": "4d89ae2c2eea0f8406000004"
},
"name": "user",
"properties": [
"memberof": {
"name": "memberof",
"type": "string"
}
]
}
Спасибо за помощь.
С наилучшими пожеланиями Flamur