Я, имеющий следующую ситуацию в доктрине ODM с MongoDB и Symfony 2.хдоктрина ODM с MongoDB нужны обе ссылки отображения установить
Класс A:
class Port extends AbstractEthernetPort
{
/** Other Fields **/
/**
* Owning the reference
* @MongoDB\ReferenceOne(
* targetDocument="\xxx\AbstractObject",
* cascade="all",
* inversedBy="ports"
*)
*/
protected $device;
/** SETTER and GETTERS **/
}
Класс B:
class Device extends AbstractObject
{
/** Other Fields **/
/**
* @MongoDB\ReferenceMany(
* targetDocument="\xxx\AbstractEthernetPort",
* cascade="all",
* mappedBy="device"
*)
*/
protected $ports = array();
/** SETTER and GETTERS **/
}
Эти оба класса связаны с привязкой к ReferenceOne и ReferenceMany. Код для этого сообщения слегка изменился.
Это обе версии тестовой площадки. Первый не работает, второй делает:
public function testPorts() {
$dm = self::$container->get('doctrine_mongodb')->getManager();
$sideASwitch = new Device();
$sideASwitch->setName("Switch01");
$copper1 = new Port();
$copper1->setDescription("Copper Port");
$copper2 = new Port();
$copper2->setDescription("Copper Port");
$sideASwitch->setPorts(array($copper1, $copper2));
$dm->persist($sideASwitch);
$dm->flush();
$x = $dm->getRepository("Device")->findOneBy(array());
\Doctrine\Common\Util\Debug::dump($x,1);
}
Запрос в конце возвращает массив портов с 0 содержанием.
public function testPorts() {
$dm = self::$container->get('doctrine_mongodb')->getManager();
$sideASwitch = new Device();
$sideASwitch->setName("Switch01");
$copper1 = new Port();
$copper1->setDescription("Copper Port");
$copper2 = new Port();
$copper2->setDescription("Copper Port");
// ADDITIONAL
$copper1->setDevice($sideASwitch);
$copper2->setDevice($sideASwitch);
$sideASwitch->setPorts(array($copper1, $copper2));
$dm->persist($sideASwitch);
$dm->flush();
$x = $dm->getRepository("Device")->findOneBy(array());
\Doctrine\Common\Util\Debug::dump($x,1);
}
Этот запрос возвращает массив портов с 2-мя объектами в нем ...
Это нормальное поведение в Doctrine ODM или я делаю что-то не так?
С благодарностью за любую помощь