Ладно, ребята, либо я что-то упустил, либо я просто обнаружил ошибку.
Это проект Sf2 (v2.0.9) / Doctrine ODM (1.0.0BETA).
По сути, у меня есть два документа, назовем их E и P:
E ссылается на множество P:
/**
* @MongoDB\ReferenceMany(targetDocument="P", simple="true")
* @MongoDB\Index
*/
protected $p = array();
IМне все равно, чтобы иметь возможность получать соответствующие E из P.
Я сгенерировал E getter / setter с помощью doctrine:mongodb:generate:documents
.
Когда я объявляю новыйE () затем добавьте несколько существующих P ($ e-> addP ($ p)), например:
$p1 = $this->dm->getRepository('ProjectBundle:P')->findOneBy(array('id' => $pid1)));
$p2 = $this->dm->getRepository('ProjectBundle:P')->findOneBy(array('id' => $pid2)));
$pArr = array($p1, $p2);
$e = new E();
foreach ($pArr as $p) {
$e->addP();
}
(не смотрите слишком глубоко на этот кусок кода, пожалуйста, он менее дряннойв моем контроллере, но я все еще в основном делаю foreach($pArr as $p)
на $e->addP($p)
).
Я получаю такой объект в своей коллекции E:
"$pushAll": {
"p": [
"0": ObjectId("4f4ba859c883fdf85e00313a"),
"1": ObjectId("4f4ba859c883fdf85e003af2")
]
},
"_id": ObjectId("4f4bb608c883fd7860000001"),
"createdat": ISODate("2012-02-27T16: 57: 44.0Z"),
Я нашелстранно иметь поле $ pushAll, но я могу прочитать это с помощью $ e-> getP ();
Однако, это останавливает меня, когда я пытаюсь прикрепить файл к E:
/**
* @MongoDB\ReferenceMany(targetDocument="P", simple="true")
* @MongoDB\Index
*/
protected $p = array();
/** @MongoDB\File */
private $file;
Потому что когда я пытаюсь $e->setFile($filename)
и сохраняю / сбрасываю, я получаюror:
[MongoCursorException]
document to insert can't have $ fields
Ошибка, которая, очевидно, относится к этому странному полю $pushAll
.
Если я вручную изменю свой документ в MongoDB с помощью такой записи:
"p": [
"0": ObjectId("4f4ba859c883fdf85e00313a"),
"1": ObjectId("4f4ba859c883fdf85e003af2")
],
"_id": ObjectId("4f4bb608c883fd7860000001"),
"createdat": ISODate("2012-02-27T16: 57: 44.0Z")
... тогда все снова хорошо, я могу сохранить свой файл без каких-либо ошибок.
Хорошо, звучит так, будто я что-то упустил или что мне не хватило RTFM для этой части ReferenceMany
,но я все еще приходил сюда, чтобы посмотреть, кто-то уже вошел в это.
Приветствия.