Проблема с сохранением вложенных вложенных внедренных документов.Php

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Проблема с сохранением вложенных вложенных внедренных документов.

Сообщение Anonymous »

Обновление: Почти уверен, что это ошибка, создавшая проблему в Jira.
Обновление (5 мая 2011 г.): По рекомендации jwage я переключился на ссылочные отношения между категориями и публикацией (в отличие от встроенных).
Я использую последнюю версию Doctrine ODM (только что из Git).
У меня есть три уровня документов (два встроенных); Категория -> EmbedsMany: Post -> EmbedsMany PostVersion.
PostVersion автоматически обрабатывается Post. Когда я создаю новое сообщение, оно фактически также создает новую PostVersion под капотом.
Моя проблема в том, что Doctrine путают с PostVersions. Если я получаю существующую категорию и добавляю к ней новую публикацию, PostVersions новой публикации добавляются к первой публикации в коллекции $posts категории.
Пошаговая инструкция:
  • Создать новое сообщение (Post1) и категорию
  • Добавить сообщение 1 в категорию
  • Сохранить категорию, очистить, очистить
  • Получить категорию
  • Создать новое сообщение (Post2)
  • Добавить сообщение 2 в категорию
  • Очистка
На этом этапе в базе данных должна быть одна категория, две публикации и каждая запись имеет одну версию публикации. Однако на самом деле существует одна категория, две публикации, первая запись имеет две версии PostVersion, а вторая запись имеет ноль PostVersion.
Сами документы во время запроса верны, просто нужно, чтобы они были сохранены в базе данных, которая неверна. Чего мне не хватает?
Ожидаемый результат:

Код: Выделить всё

{
"_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]
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»