Orm Doctrine2填充关系生成空值

Orm Doctrine2填充关系生成空值,orm,doctrine-orm,entity-relationship,Orm,Doctrine Orm,Entity Relationship,我对教义2的关系和事件有问题 我有这样的关系: id;user_id;point;date;game_id 6;17;-1;2014-03-26 15:02:01;NULL 要点: My\Entity\Point: type: entity table: null manyToOne: user: targetEntity: User game: targetEntity: Game fields: id: type: i

我对教义2的关系和事件有问题

我有这样的关系:

id;user_id;point;date;game_id
6;17;-1;2014-03-26 15:02:01;NULL
要点:

My\Entity\Point:
type: entity
table: null
manyToOne:
    user:
        targetEntity: User
    game:
        targetEntity: Game
fields:
    id:
        type: integer
        id: true
        generator:
            strategy: AUTO
    point:
        type: integer
    date:
        type: datetime
lifecycleCallbacks: {  }
游戏:

因此:

  • 一个用户可以有多个游戏
  • 一场比赛可以得很多分
  • 一分只能与一场比赛相关
  • 一个用户可以有多个点
此外,我还有一些事件监听器

/**
 * @param LifecycleEventArgs $args
 */
public function preUpdate(LifecycleEventArgs $args) {
    $entity = $args->getEntity();

    if ($entity instanceof Game && $args->hasChangedField('win')) {
        $this->point->setUser($entity->getUser());
        $this->point->setGame($entity);

        switch(true){
            case $args->getNewValue('win'):
                $this->point->setPoint(1);
                break;
            case $args->getOldValue('win'):
                $this->point->setPoint(-1);
                break;
            default:
                break;
        }
        $this->haveToBeFlush = true;
    }
}

/**
 * @param PostFlushEventArgs $eventArgs
 */
public function postFlush(PostFlushEventArgs $eventArgs)
{
    if ($this->haveToBeFlush === true) {
        $eventArgs->getEntityManager()->persist($this->point);
        $eventArgs->getEntityManager()->flush();
    }
}
  • 如果用户赢/输了游戏,我想为他创建点(1/-1)
后刷新后,我可以在db中看到如下记录:

id;user_id;point;date;game_id
6;17;-1;2014-03-26 15:02:01;NULL

我不知道,为什么游戏id出现空值,好了,现在一切都清楚了

首先,我认为当我使用实体时会出现这个问题,我已经为实体创建了事件监听器“postUpdate”。我错了

问题在于缓存。清除缓存并重新启动apache后,一切正常