我在 Symfony 2.3 中有一个项目,使用 Doctrine ORM 2.3.4,我正在使用类继承:
父类
/**
* @ORM\Entity
* @ORM\Table(name="parent")
* @ORM\InheritanceType("JOINED")
* @ORM\DiscriminatorColumn(name="discr", type="string")
* @ORM\DiscriminatorMap({"child"="Child"})
*/
class Parent
{
/**
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
public function getId()
{
return $this->id;
}
// other fields & methods
}
和一个孩子
/**
* @ORM\Entity
* @ORM\Table(name="child")
*/
class Child extends Parent
{
/**
* @ORM\Column(name="id", type="integer")
* @ORM\Id
*/
private $id;
public function getId()
{
return $this->id;
}
}
当我坚持子对象,刷新然后我尝试检索子ID时,问题就来了:
// ChildController::createAction
$em = $this->getDoctrine()->getManager();
$child = new Child();
// set child fields
$em->persist($child);
$em->flush();
$child->getId(); // <- not working
在数据库上正确保存子行,如果我更改子方法getId
public function getId()
{
return parent::getId();
}
有用。
谁能给我解释一下?
非常感谢。