Обновление (5 мая 2011 г.): По рекомендации jwage я переключился на ссылочные отношения между категориями и публикацией (в отличие от встроенных).
Я использую последнюю версию Doctrine ODM (только что из Git).
У меня есть три уровня документов (два встроенных); Категория -> EmbedsMany: Post -> EmbedsMany PostVersion.
PostVersion автоматически обрабатывается Post. Когда я создаю новое сообщение, оно фактически также создает новую PostVersion под капотом.
Моя проблема в том, что Doctrine путают с PostVersions. Если я получаю существующую категорию и добавляю к ней новую публикацию, PostVersions новой публикации добавляются к первой публикации в коллекции $posts категории.
Пошаговая инструкция:
- Создать новое сообщение (Post1) и категорию
- Добавить сообщение 1 в категорию
- Сохранить категорию, очистить, очистить
- Получить категорию
- Создать новое сообщение (Post2)
- Добавить сообщение 2 в категорию
- Очистка
Сами документы во время запроса верны, просто нужно, чтобы они были сохранены в базе данных, которая неверна. Чего мне не хватает?
Ожидаемый результат:
Код: Выделить всё
{
"_id": ObjectId("4da66baa6dd08df1f6000001"),
"name": "The Category",
"posts": [
{
"_id": ObjectId("4da66baa6dd08df1f6000002"),
"activeVersionIndex": 0,
"versions": [
{
"_id": ObjectId("4da66baa6dd08df1f6000003"),
"name": "One Post",
"content": "One Content",
"metaDescription": null,
"isAutosave": false,
"createdAt": "Thu, 14 Apr 2011 13:36:10 +1000",
"createdBy": "Cobby"
}
]
},
{
"_id": ObjectId("4da66baa6dd08df1f6000004"),
"activeVersionIndex": 0
"versions": [
{
"_id": ObjectId("4da66baa6dd08df1f6000005"),
"name": "Two Post",
"content": "Two Content",
"metaDescription": null,
"isAutosave": false,
"createdAt": "Thu, 14 Apr 2011 13:36:10 +1000",
"createdBy": "Cobby"
}
]
}
]
}
Код: Выделить всё
{
"_id": ObjectId("4da66baa6dd08df1f6000001"),
"name": "The Category",
"posts": [
{
"_id": ObjectId("4da66baa6dd08df1f6000002"),
"activeVersionIndex": 0,
"versions": [
{
"_id": ObjectId("4da66baa6dd08df1f6000003"),
"name": "One Post",
"content": "One Content",
"metaDescription": null,
"isAutosave": false,
"createdAt": "Thu, 14 Apr 2011 13:36:10 +1000",
"createdBy": "Cobby"
},
{
"_id": ObjectId("4da66baa6dd08df1f6000005"),
"name": "Two Post",
"content": "Two Content",
"metaDescription": null,
"isAutosave": false,
"createdAt": "Thu, 14 Apr 2011 13:36:10 +1000",
"createdBy": "Cobby"
}
]
},
{
"_id": ObjectId("4da66baa6dd08df1f6000004"),
"activeVersionIndex": 0
}
]
}
Category.php
Код: Выделить всё
Подробнее здесь: [url]https://stackoverflow.com/questions/5658349/issue-persisting-nested-nested-embedded-documents[/url]
Мобильная версия