0
我有一個關於doctrine2關係和事件的問題。Doctrine2填充關係生成空值
我有關係是這樣的:
點:
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: { }
遊戲:
My\Entity\Game:
type: entity
table: null
manyToOne:
user:
targetEntity: User
oneToMany:
points:
targetEntity: Point
mappedBy: game
fields:
id:
type: integer
id: true
generator:
strategy: AUTO
date:
type: datetime
win:
type: boolean
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)。
postFlush後,我可以看到在DB記錄是這樣的:
id;user_id;point;date;game_id
6;17;-1;2014-03-26 15:02:01;NULL
我不知道,爲什麼出現game_id