具有复合键的Doctrine 2实体:
/**
* @Entity
*/
class Test
{
/**
* @Id
* @Column (type="integer", length=11, name="id")
*
*/
protected $id = null;
/**
* @Id
* @Column (type="integer", length=11, name="idtwo")
*
*/
protected $idtwo = null;
public function setIdTwo($id)
{
$this->idtwo = $id;
}
public function setId($id)
{
$this->id = $id;
}
}
保存实体
$test = new Test();
$test->setId(1);
$test->setIdTwo(1);
$em->persist($test);
数据库表:
CREATE TABLE `Bella_Test` (
`id` int(11) NOT NULL,
`idtwo` int(11) NOT NULL,
PRIMARY KEY (`id`,`idtwo`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
预期结果:将一行添加到具有两个id字段的db表中,两个值都为1。
实际结果:没有向db表添加行。没有例外。
问题:发生了什么事?
答案 0 :(得分:0)
您可以使用try catch块来查看会发生什么
try{
$em->flush(); //don't forget flush after persisting an object
}
catch(Exception $e){
echo 'Flush Operation Failed: '.$e->getMessage();
}
其他假设,在我看来,您的实体表名称和数据库表名称可能彼此不匹配。我认为试一试
并不是一个坏主意/**
* @Entity
* @Table(name="Bella_Test")
*/
.
.
.