MongoDB和Doctrine都是新的。我目前正在为我的框架设置一个模型系统,并试图实现这些事件。
这个想法是这样的:当某个模型得到更新时,应该创建/更新一个新用户(也就是一个模型)。我在PreUpdate事件中执行此操作,因此我可以捕获所做的更改(检查模型上的电子邮件地址是否已更改)。
在此活动中创建和保留新模型就像魅力一样,但是当我尝试更新用户时,我无法保存数据。我试过刷新但这会导致一个无限循环(我可以理解为什么,因为他试图再次刷新同一个文档)。
关于我应该如何完成这项工作的任何想法?在用户的工作单元上尝试了recomputeSingleDocumentChangeSet,但这似乎没有保存任何东西。
答案 0 :(得分:0)
在用户的工作单元上尝试了recomputeSingleDocumentChangeSet,但这似乎并没有保存任何内容。
这正是你应该做的(修改用户字段后)
// In MainPage:
public static MainPage Instance {
// This will return null when your current page is not a MainPage instance!
get { return (Window.Current.Content as Frame).Content as MainPage; }
}
// Now in HomePage it's only:
MainPage.Instance.OpenTab(TabContent.Settings);
并且没有其他内容,特别是不要使用$user->setSomething(true);
$uow->recomputeSingleDocumentChangeSet(/* ... */);
,因为您已经在flush
内。 flush
使Doctrine重新计数更改,稍后将包含在文档的更新查询中。
在此活动中创建和保持新模型就像魅力一样
然而,这听起来很奇怪,因为在recomputeSingleDocumentChangeSet
事件发生时新的对象不应该到达数据库(除非你发布了另一个preUpdate
,这可能会产生不必要的副作用)因为插入处理在更新之前。