Я использую Doctrine 2 MongoDB ODM , все работает нормально, кроме 1 конкретного отношения.Что неясно, так это то, что у меня в проекте, казалось бы, одинаковые отношения, и они все прекрасно работают
namespace Project\Entities\World; // same NS as class, but this is after
// splitting functionality from Entity to MappedSuperclass, didn't work either
/**
* @ReferenceOne(targetDocument="Project\Entities\World")
* @var IWorld
*/
protected $world;
, используемых в Project \ Entities \ PlayerCharacter ( extends Project \ Entities \ World \ Object, упомянутыйвыше) =>
namespace Project\Entities;
/**
* @Document(collection="worlds")
* @HasLifecycleCallbacks
*/
class World {
/**
* @ReferenceMany(targetDocument="PlayerCharacter")
* @var ArrayCollection
*/
protected $playerCharacters;
}
Когда я устанавливаю переменную $ world, все нормально в PHP-скрипте.Даже $ objectManager-> refresh ($ character), $ character-> getWorld () === $ world получается хорошо.Но он никогда не появляется в самой базе данных ( die сразу после его установки и сбрасывается, чтобы убедиться, что он никогда не был случайно изменен где-либо) на конце PlayerCharacter, только на мировой стороне
С другой стороны
class PlayerCharacter {
/**
* @ReferenceOne(targetDocument="User")
* @var User
*/
protected $user;
}
=>
/**
* @Document(collection="users")
* @HasLifecycleCallbacks
*/
class User {
/**
* @ReferenceMany(targetDocument="PlayerCharacter")
* @var ArrayCollection
*/
protected $characters;
}
работает
В упрощенном варианте:
- PlayerCharacter :: $ user <== (1:N) ==> Пользователь :: $ символов
(и все остальные) в порядке, в то время как только
- PlayerCharacter :: $ world <== (1: N) ==> World :: $ playerCharacters
работает только на мировой стороне
Глядя на это много дней, не могу найти ничего другого.
- Пробное переименование имен свойств, без изменений
- Запись в гидраторедля персонажа ---> мир выглядит идентично другим
- Когда я добавляю запись полуручно (через RockMongo), она отлично работает
- Создание поля "мир" как NULL не имеет значения, с {} он говорит "Неопределенный индекс: $ id", но я предполагаю, что это ожидаемое поведение
- Объекты работают отдельнотоже очень хорошо, это действительно только это одно отношение
Есть ли что-то, что я пропускаю / упускаю из виду или что я могу сделать, чтобы узнать, почему оно не сохраняется
(отредактируетсообщение, если есть необходимость в дополнительной информации)
Спасибо!